大熊猫结合dataframes不同指数
问题描述:
我有两个dataframes df_1
和df_2
具有不同指数和列。但是,有一些索引和列重叠。大熊猫结合dataframes不同指数
我创建了一个数据帧df
与索引的联合和列的:因此存在不重复指数或列。
我想填写以下方式数据帧df
:
for x in df.index:
for y in df.columns:
df.loc[x,y] = df_1.loc[x,y] if (x,y) in (df_1.index,df_1.columns) else df_2.loc[x,y]
谁能告诉我一个有效的方式来做到这一点?
谢谢!
答
我想你需要DataFrame.combine_first
:
df_1 = pd.DataFrame({'A':[1,2,3],
'E':[4,5,6],
'V':[7,8,9],
'D':[1,3,5]},
index=pd.to_datetime(['2017-01-05', '2017-01-04', '2017-01-01']))
print (df_1)
A D E V
2017-01-05 1 1 4 7
2017-01-04 2 3 5 8
2017-01-01 3 5 6 9
df_2 = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9]}, index=pd.date_range('2017-01-01', periods=3)) * 10
print (df_2)
A B C
2017-01-01 10 40 70
2017-01-02 20 50 80
2017-01-03 30 60 90
df = df_1.combine_first(df_2)
print (df)
A B C D E V
2017-01-01 3.0 40.0 70.0 5.0 6.0 9.0
2017-01-02 20.0 50.0 80.0 NaN NaN NaN
2017-01-03 30.0 60.0 90.0 NaN NaN NaN
2017-01-04 2.0 NaN NaN 3.0 5.0 8.0
2017-01-05 1.0 NaN NaN 1.0 4.0 7.0
惊人!索引和列是否自动分类?因为我的索引是日期索引。 – riccio777
我想是的,但不是100%肯定,如果不加'.sort_index()'。 – jezrael
我测试了一下,漂亮的种种datetimeindex。我也改变它的样本。 – jezrael