【发布时间】:2016-01-03 12:59:33
【问题描述】:
我在 python pandas 中有两个不同长度的数据框,如下所示:
df1: df2:
Column1 Column2 Column3 ColumnA ColumnB
0 1 a r 0 1 a
1 2 b u 1 1 d
2 3 c k 2 1 e
3 4 d j 3 2 r
4 5 e f 4 2 w
5 3 y
6 3 h
我现在要做的是比较 df1 的 Column1 和 df2 的 ColumnA。对于每个“命中”,其中 df2 中的 ColumnA 中的一行与 df1 中 Column1 中的一行具有相同的值,我想将一列附加到 df1,其中 df2 的 ColumnB 具有“命中”所在的行,所以我的结果如下所示:
df1:
Column1 Column2 Column3 Column4 Column5 Column6
0 1 a r a d e
1 2 b u r w
2 3 c k y h
3 4 d j
4 5 e f
到目前为止我尝试过的是:
for row in df1, df2:
if df1[Column1] == df2[ColumnA]:
print 'yey!'
这给了我一个错误,说我无法比较两个不同长度的数据帧。所以我尝试了:
for row in df1, df2:
if def2[def2['ColumnA'].isin(def1['column1'])]:
print 'lalala'
else:
print 'Nope'
就我获得输出而言,哪个“有效”,但我认为它不会遍历行并比较它们,因为它只打印两次“lalala”。于是我又研究了一番,找到了一种遍历数据框每一行的方法,即:
for index, row in df1.iterrows():
print row['Column1]
但我不知道如何使用它来比较两个数据框的列并获得我想要的输出。
非常感谢任何有关如何执行此操作的帮助。
【问题讨论】:
标签: python pandas compare dataframe