我有2个数据框,每个都有一个共同的值在列C。我使用pd.merge来合并这些数据框,但我不希望重复行为每个匹配对。这将是更清楚地可视化如下:
东风1
df = pd.DataFrame(columns=['A','B','C'])
df['A'] = ['2_21','2_34']
df['B'] = ['X1','X2']
df['C'] = ['2','2']
print(df)
A B C
0 2_21 X1 2
1 2_34 X2 2
东风2
df2 = pd.DataFrame(columns=['D','E','C'])
df2['D'] = ['2_27','2_35']
df2['E'] = ['Y1','Y2']
df2['C'] = ['2','2']
print(df)
D E C
0 2_27 Y1 2
1 2_35 Y2 2`
不需要的输出/ Dataframe :
df1.merge(df2, how='left', on='C')
A B C D E
0 2_21 X1 2 2_27 Y1
1 2_21 X1 2 2_35 Y2
2 2_34 X2 2 2_27 Y1
3 2_34 X2 2 2_35 Y2
所需输出/ Dataframe
A B C D E
0 2_21 X1 2 2_27 Y1
1 2_34 X2 2 2_35 Y2
我已经尝试通过删除重复项来过滤不需要的输出/ Dataframe ,但这不起作用,因为我需要将列拆分为子列并删除子列的重复项,而不是单个单元格(尝试后似乎不实用)。
我也不能简单地删除不需要的 Dataframe 中不需要的行,因为有许多随机出现的行需要手动删除。
合并的Pandas文档是here,但它似乎不允许这样做。
有人知道一个可能的方法来实现这一点吗?我真的很感谢你的帮助提前因为我一直在这个问题上了一段时间。谢谢
1条答案
按热度按时间ee7vknir1#
如果你真的想根据位置将df中的所有C合并到df2中的所有C,你需要创建一个join helper列,就像我在这里用'key'所做的那样:
输出:
然后可以删除结果中的键列。
或者,如果您只想并排连接两个 Dataframe ,则使用
pd.concat([df, df2], axis=1)
。