添加列,每一行我有蟒蛇大熊猫不同长度的两个dataframes这样的:按行长度不同行的两个dataframes比较和同等价值
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。对于每个“hit”,其中df2中的ColumnA中的行与df1中的Column1中的行具有相同的值,我想将df1的列添加到df1中,并且df2的值ColumnB具有找到“hit”的行,让我的结果是这样的:
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!'
这给了我一个错误说我不能比较不同长度的两个dataframes。所以,我想:
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]
但我不知道怎么用它来比较两个dataframes的列,并得到输出I欲望。
任何有关如何做到这一点的帮助将非常感激。
谢谢你,非常简洁答案!但是我注意到,我不太清楚你从buffer_df = ....到dfs = dfs.append(buffer_df)所做的事情。你能解释一下代码的作用吗?谢谢! –
实际上,我认为我得到了单行代码的功能,但我不明白它们如何一起创建输出... –
@sequence_hard再次检查我的答案:添加新的细节。你的过程变得更清楚了吗? – Gregg