кадры 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'
когда я пытаюсь использовать два разных решения. Может ли кто-нибудь дать мне знать, где я ошибся, пожалуйста.
Спасибо
Похоже, 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
Надеюсь это поможет.
date
здесь используется в качестве индекса, к ней нельзя получить доступ в виде столбца. Попробуйтеdf3= pd.concat([df1, df2]).reset_index().groupby('date').sum().reset_index()