我想参考ID将计算出的差异添加到现有数据框中。差异被保存到单独的数据框中。
实际dataFrame具有以下视图df1
:
Id Col1 Col2 Col3
567 6 7 9
567 8 10 18
567 9 11 20
567 10 12 30
567 4 16 57
... ... ... ...
1568 6 7 9
1568 8 10 18
1568 9 11 20
1568 10 12 30
1568 4 16 57
针对每个ID分别保存到df2
的计算差异,例如Id=567
:
Col1_d1 Col2_d1 Col3_d1
NaN NaN NaN
-2 -3 -9
-1 -1 -2
-1 -1 -10
6 -4 -27
此外,我用NaN
填充的0
个值。
我尝试使用groupby
和map
,但没有成功。
L1 = [x for _, x in df1.groupby(df1['Id'])]
鉴于需要按df2
进行分组,如何将其与第二个dataFrame Id
合并?
我尝试通过以下方式做到这一点:list(map(lambda x: df1.append(x), L1))
预期结果:
Id Col1 Col2 Col3 Col1_d1 Col2_d1 Col3_d1
567 6 7 9 0 0 0
8 10 18 -2 -3 -9
9 11 20 -1 -1 -2
10 12 30 -1 -1 -10
4 16 57 6 -4 -27
1568 6 7 9 0 0 0
8 10 18 -2 -3 -9
9 11 20 -1 -1 -2
10 12 30 -1 -1 -10
4 16 57 6 -4 -27
感谢您的任何想法和帮助。谢谢!
答案 0 :(得分:0)
通过用法固定:
df1.reset_index(inlace = True)
df2['index'] = df1['index']
dfList = [df1, df2]
reduce(lambda x, y: pd.merge(x, y, on = 'index'), dfList)