通过公共列合并数据框,但将具有相同标题的列加在一起

时间:2019-02-05 01:37:07

标签: python pandas pandas-groupby

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

输入

 <DataGrid Grid.Row="2" IsReadOnly="True" ColumnWidth="*" CanUserAddRows="False" Margin="{StaticResource AllControlsMargin}" ItemsSource="{Binding RunViewModel.LotInformationDataTable}" AutoGenerateColumns="True" IsHitTestVisible="False">
 </DataGrid>

结果

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]}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以将timestamp设置为索引并将数据帧添加在一起。对于丢失的数据点,您需要使用add设置为fill_value的{​​{1}}:

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