2024-09-24 02:28:14 发布
网友
我有两个带有公共列的数据帧。我想根据第三列的条件创建一个新列,其中包含两列(每个数据帧一列)之间的差异
df_a: Time Volume ID 1 5 1 2 6 2 3 7 3
df_b: Time Volume ID 1 2 2 2 3 1 3 4 3
输出将向dfu a追加一个新列,其中两个id相等的卷列(df_a.volume-df_b.volume)之间具有差异
df_a: Time Volume ID Diff 1 5 1 2 2 6 2 4 3 7 3 3
如果每个数据帧中的每行ID都是唯一的:
df_a['Diff'] = df_a['Volume'] - df_a['ID'].map(df_b.set_index('ID')['Volume'])
输出:
Time Volume ID Diff 0 1 5 1 2 1 2 6 2 4 2 3 7 3 3
一个选项是合并ID上的两个dfs,然后计算差异:
df_a = df_a.merge(df_b.drop(['Time'], axis=1), on="ID", suffixes=['', '2']) df_a['Diff'] = df_a['Volume'] - df_a['Volume2']
df:
Time Volume ID Volume2 Diff 0 1 5 1 3 2 1 2 6 2 2 4 2 3 7 3 4 3
合并“ID”上的两个数据帧,然后取其差异:
import pandas as pd df_a = pd.DataFrame({'Time': [1,2,3], 'Volume': [5,6,7], 'ID':[1,2,3]}) df_b = pd.DataFrame({'Time': [1,2,3], 'Volume': [2,3,4], 'ID':[2,1,3]}) merged = pd.merge(df_a,df_b, on = 'ID') df_a['Diff'] = merged['Volume_x'] - merged['Volume_y'] print(df_a) #output: Time Volume ID Diff 0 1 5 1 2 1 2 6 2 4 2 3 7 3 3
如果每个数据帧中的每行ID都是唯一的:
输出:
一个选项是合并ID上的两个dfs,然后计算差异:
df:
合并“ID”上的两个数据帧,然后取其差异:
相关问题 更多 >
编程相关推荐