合并dataframes通过公共列,但具有相同的标题添加列在一起

问题描述 投票:0回答:2

我试图找出如何通过公共列连接两个dataframes,然后添加其他类似列在一起。

输入

df1 = pd.DataFrame({'timestamp': [0, 1, 2, 3], 'value': [1, 2, 3, 4]})

df2 = pd.DataFrame({'timestamp': [0, 1, 3], 'value': [2, 2, 2]})

结果

df3 = {'timestamp': [0, 1, 2, 3], 'value': [3, 4, 3, 6]}

因为

1 + 2 = 3
2 + 2 = 4
3 + 0 = 3
4 + 2 = 6
python pandas pandas-groupby
2个回答
1
投票

你可以使用concat + groupby

import pandas as pd

df1 = pd.DataFrame({'timestamp': [0, 1, 2, 3], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'timestamp': [0, 1, 3], 'value': [2, 2, 2]})

r = pd.concat([df1, df2]).groupby('timestamp', as_index=False).sum()

print(r)

产量

   timestamp  value
0          0      3
1          1      4
2          2      3
3          3      6

0
投票

您可以设置timestamp为您的索引并添加dataframes在一起。您将需要使用addfill_value设置为0您丢失的数据点:

df1 = df1.set_index('timestamp')
df2 = df2.set_index('timestamp')
result = df1.add(df2, fill_value=0)

result

           value
timestamp       
0            3.0
1            4.0
2            3.0
3            6.0

如果你想保持timestamp为一列,只是用reset_index将其移回:

result.reset_index()

   timestamp  value
0          0    3.0
1          1    4.0
2          2    3.0
3          3    6.0
© www.soinside.com 2019 - 2024. All rights reserved.