我有两个dataframes,并且无法完成这个简单的任务,我想匹配2列,如果条件是True,那么在相应的行中追加值。就像这样。
0 1 weight
0 Pablo Frida 2
1 Pablo Andy 1
2 Pablo Vincent 1
3 Claude Georgia 3
4 Claude Andy 1
5 Georgia Andy 1
6 Andy Frida 1
7 Andy Joan 1
8 Andy Lee 1
9 Vincent Frida 2
10 Joan Lee 3
0 1 2 weight
0 Andy Claude 0 0.0
1 Andy Frida 20 0.0
2 Andy Georgia -10 0.0
3 Andy Joan 30 0.0
4 Andy Lee -10 0.0
..
..
17 Frida Vincent 60 0.0
18 Georgia Joan 0 0.0预期的结果会是这样的:
0 1 2 weight
0 Andy Claude 0 1
1 Andy Frida 20 1
2 Andy Georgia -10 1
3 Andy Joan 30 1
4 Andy Lee -10 1
..
..
17 Frida Vincent 60 2
18 Georgia Joan 0 0.0因此,我所面临的问题是,列可以按不同的顺序排列,即是一组名称。第一DataFrame的维数为(11,3),第二DataFrame的维数为(19,4)。
我该如何处理这个问题?我正在尝试这样的方法:
for i in len(df2):
if df1[0][i] == df2[0][i] or df1[0][i] == df2[1][i] and df1[1][i] == df2[0][i] or df1[0][i] == df2[0][i]:
df2['weight'][i] = df1['weight'][i]发布于 2017-12-14 20:45:51
对列进行排序-
df1.iloc[:, :2] = np.sort(df1.iloc[:, :2], axis=1)
df2.iloc[:, :2] = np.sort(df2.iloc[:, :2], axis=1)现在,执行一个内在的merge -
df2 = df2.drop('weight', 1).merge(df1, on=['0', '1'])
df2.head()
0 1 2 weight
0 Andy Claude 0 1
1 Andy Frida 20 1
2 Andy Georgia -10 1
3 Andy Joan 30 1
4 Andy Lee -10 1https://stackoverflow.com/questions/47820875
复制相似问题