我试图找出如何通过一个公共列连接两个数据框,然后将其他类似的列加在一起。
输入
<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]}
答案 0 :(得分:1)
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