Ошибка при добавлении двух кадров данных

1

кадры df1 и df2 которые я хотел бы добавить вместе, чтобы сделать df3. Частичные кадры данных (как они достаточно велики) выглядят следующим образом

df1:

            total_pnl_per_pos          invested    
date 
2015-03-17           0.330533     145790.529585   
2015-03-18          -0.132040     152116.458134       
2015-03-19           0.189508     141114.361229         
2015-03-20           0.346906     323712.355051        
2015-03-21          -0.004500     149999.909424          

df2:

            total_pnl_per_pos     invested  
date                                                                
2015-03-16          -0.009346   3843277.00  
2015-03-17          -0.025422   4495925.00  
2015-03-18          -0.093223   4233412.00  
2015-03-19          -0.144945   4340475.00  
2015-03-20          -0.030945   6107379.00  

Я бы хотел, чтобы df3 был df1 + df1 и выглядел так:

            total_pnl_per_pos      invested
date        
2015-03-16          -0.009346       3843277
2015-03-17           0.305111    4641715.53
2015-03-18          -0.225263   4385528.458
2015-03-19           0.044563   4481589.361
2015-03-20           0.315961   6431091.355
2015-03-21            -0.0045   149999.9094

Пожалуйста, не то, что df1 и df2 индексируются по дате и не обязательно имеют одинаковые даты в каждом кадре данных.

Я попытался использовать:

df3= df1.set_index('date').add(df2.set_index('date'), fill_value=0).reset_index()

а также

df3= pd.concat([df1, df2]).groupby('date').sum().reset_index()

Однако я получаю KeyError: 'date' когда я пытаюсь использовать два разных решения. Может ли кто-нибудь дать мне знать, где я ошибся, пожалуйста.

Спасибо

  • 0
    date здесь используется в качестве индекса, к ней нельзя получить доступ в виде столбца. Попробуйте df3= pd.concat([df1, df2]).reset_index().groupby('date').sum().reset_index()
Теги:
pandas

1 ответ

1
Лучший ответ

Похоже, date уже date. Другими словами, вы не можете назначить date как индекс дважды. Таким образом, ниже будет работать:

df3 = df1.add(df2, axis='index', fill_value=0)

Выход:

            total_pnl_per_pos      invested
date                                       
2015-03-16          -0.009346  3.843277e+06
2015-03-17           0.305111  4.641716e+06
2015-03-18          -0.225263  4.385528e+06
2015-03-19           0.044563  4.481589e+06
2015-03-20           0.315961  6.431091e+06
2015-03-21          -0.004500  1.499999e+05

Надеюсь это поможет.

  • 1
    отлично, спасибо за помощь, Гёза

Ещё вопросы

Сообщество Overcoder
Наверх
Меню