Python 根据条件计算两个不同数据帧中两列的差异
我有两个带有公共列的数据帧。我想根据第三列的条件创建一个新列,其中包含两列(每个数据帧一列)之间的差异Python 根据条件计算两个不同数据帧中两列的差异,python,pandas,Python,Pandas,我有两个带有公共列的数据帧。我想根据第三列的条件创建一个新列,其中包含两列(每个数据帧一列)之间的差异 df_a: Time Volume ID 1 5 1 2 6 2 3 7 3 输出将向dfu a追加一个新列,其中两个id相等的卷列(df_a.volume-df_b.volume)之间具有差异 df_a: Time Volume ID Diff
df_a:
Time Volume ID
1 5 1
2 6 2
3 7 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都是唯一的:
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:
一个选项是合并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:
合并“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”上的两个数据帧,然后取其差异:
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