我基本上有两个数据帧。让我们说aa和bb。我想查看ba的第一列中aa的第一列中的所有值,如果它们是,我必须得到aa的第2列并将其添加到bb中的新列(如果没有多少我'我会放一个0)。让我们看一下看一些代码是否更有意义。我已经使用apply和函数完成了它:
aa=pd.DataFrame({'a':[1,2,3,4,5],'b':[6,7,8,9,0]})
bb=pd.DataFrame({'c':[11,2,13,4,15],'d':['f','h','j','k','l']})
a b
0 1 6
1 2 7
2 3 8
3 4 9
4 5 0
c d
0 11 f
1 2 h
2 13 j
3 4 k
4 15 l
def set_time_session (row):
element = row['c']
if element in aa['a'].unique():
return aa['b'][aa['a']==element]
else:
return 0
column = bb.apply(set_time_session,axis=1)
bb['newcolumn']=column
c d newcolumn
0 11 f 0
1 2 h 7
2 13 j 0
3 4 k 9
4 15 l 0
这实际上有效,但是当在具有200000行的数据帧中完成时,需要永远完成。我确信这是一种更好,更快的方法。谢谢!
答案 0 :(得分:0)
试试这个:
res = pd.merge(aa, bb, left_on='a', right_on='c', how='inner', left_index=True)
bb['newcolumn']= res.reindex(range(len(aa))).fillna(0)['b']
print(bb)