我有两个数据框。
dataframe_a
:
data | location_zone | test_hour | analysis_date
------------+---------------+-----------+------------------------
10 | america | 12 | 2000-1-1
11 | america | 13 | 2000-1-2
21 | china | 14 | 2000-1-3
和dataframe_b
:
data | location_zone | test_hour | analysis_date
------------+---------------+-----------+------------------------
1 | china | 14 | 2000-1-3
2 | america | 13 | 2000-1-2
3 | america | 12 | 2000-1-1
我需要将这些数据帧组合到相应的location_zone
,test_hour
和analysis_date
上,并添加data
列。最终结果应为:
data | location_zone | test_hour | analysis_date
------------+---------------+-----------+------------------------
13 | america | 12 | 2000-1-1
13 | america | 13 | 2000-1-2
22 | china | 14 | 2000-1-3
答案 0 :(得分:1)
df = pd.concat([dataframe_a, dataframe_b]).groupby(['location_zone','test_hour','analysis_date'], as_index=False)['data'].sum()
print(df)
输出
location_zone test_hour analysis_date data
0 america 12 2000-1-1 13
1 america 13 2000-1-2 13
2 china 14 2000-1-3 22
答案 1 :(得分:0)
由于两个df
的列名称相同,因此您可以将一个data
列重命名为不同的名称,然后让merge
处理其余列。接下来,调用eval
并在原始列上切片
df_final = (df_a.merge(df_b.rename(columns={'data': 'data_b'}))
.eval('data=data + data_b')[df_a.columns])
Out[20]:
data location_zone test_hour analysis_date
0 13 america 12 2000-1-1
1 13 america 13 2000-1-2
2 22 china 14 2000-1-3