我正在连接两个 Pandas 数据帧,如下所示。
part1 = pd.DataFrame({'id' :[100,200,300,400,500],
'amount': np.random.randn(5)
})
part2 = pd.DataFrame({'id' :[700,100,800,500,300],
'amount': np.random.randn(5)
})
concatenated = pd.concat([part1, part2], axis=0)
amount id
0 -0.458653 100
1 2.172348 200
2 0.072494 300
3 -0.253939 400
4 -0.061866 500
0 -1.187505 700
1 -0.810784 100
2 0.321881 800
3 -1.935284 500
4 -1.351507 300
如果行 id
尚未出现在 part2
中,如何限制操作,以便仅将 part2
中的行包含在 concatenated
中第 1 部分
?在某种程度上,我想将 id
列视为一个集合。
是否可以在 concat() 期间执行此操作,或者这更像是一个后处理步骤?
此示例所需的输出为:
concatenated_desired
amount id
0 -0.458653 100
1 2.172348 200
2 0.072494 300
3 -0.253939 400
4 -0.061866 500
0 -1.187505 700
2 0.321881 800
最佳答案
在concat()
之后调用drop_duplicates()
:
part1 = pd.DataFrame({'id' :[100,200,300,400,500],
'amount': np.arange(5)
})
part2 = pd.DataFrame({'id' :[700,100,800,500,300],
'amount': np.random.randn(5)
})
concatenated = pd.concat([part1, part2], axis=0)
print concatenated.drop_duplicates(cols="id")
关于python - Pandas:以唯一值为条件的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21185585/