[英]Merging two dataframes based on common values using pandas python?
這是我關於stackoverflow的第一個問題,所以請多多包涵。
我是 pandas 的新手,我需要根據列中的值合並兩個數據幀:
df1:
Col1 Col2
0 A 10
1 B 12
2 C 22
3 D 22
4 E 22
5 F 11
6 G 55
7 H 60
df2:
Col3 Col4
0 J 11
1 K 22
2 L 22
3 M 60
4 N 80
5 O 45
6 P 12
7 Q 65
生成的 dataframe 應該是這樣的:
Col1 Col2 Col3 Col4
0 B 12 P 12
1 C 22 K 22
2 D 22 L 22
3 H 60 M 60
它應該比較 Col2 和 Col4 並且只保留公共行並將兩個數據幀合並為一個。 我嘗試了以下代碼,但結果不是我想要的。
both_DFS=df1.merge(df2,left_on='Col2',right_on='Col4')
對於這個結果是:
Col1 Col2 Col3 Col4
0 B 12 P 12
1 C 22 K 22
2 C 22 L 22
3 D 22 K 22
4 D 22 L 22
5 E 22 K 22
6 E 22 L 22
7 H 60 M 60
您需要使用groupby().cumcount
枚舉重復的行,然后合並:
(df1.assign(idx=df1.groupby('Col2').cumcount())
.merge(df2.assign(idx=df2.groupby('Col4').cumcount()),
left_on=['Col2','idx'],
right_on=['Col4','idx'])
)
Output:
Col1 Col2 idx Col3 Col4
0 B 12 0 P 12
1 C 22 0 K 22
2 D 22 1 L 22
3 F 11 0 J 11
4 H 60 0 M 60
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.