我一直在搜索,但是找不到我想要的答案,因此我很抱歉问我想像的是重复性问题。
我有两个数据帧-df1是交易数据列表,而df2是一种密钥。 df1 ['code']引用df2中的一列。
如果在df1中找到的交易代码在df2中,我想在新列中将该值附加到df1条目,以标识该交易有效。如果代码不在df2中,那么我想在同一列中指出相反的内容。
我了解如何使用“ for”循环执行此操作,但是我的理解是我应该学习如何使用熊猫而不依赖于此。
预先感谢您的帮助!
答案 0 :(得分:0)
使用numpy.where()
:
df1['new_col'] = numpy.where(df1['df1_code'].isin(df2['df2_code']), 'VALID', 'INVALID')
样本DF
>>> import pandas as pd
>>> import numpy as np
>>> df1 = pd.DataFrame({'code':range(5,15), 'transaction':range(10)})
>>> df2 = pd.DataFrame({'code':range(12,22), 'transaction':range(7,17)})
>>> df1
code transaction
0 5 0
1 6 1
2 7 2
3 8 3
4 9 4
5 10 5
6 11 6
7 12 7
8 13 8
9 14 9
>>> df2
code transaction
0 12 7
1 13 8
2 14 9
3 15 10
4 16 11
5 17 12
6 18 13
7 19 14
8 20 15
9 21 16
>>> df1['new_col'] = np.where(df1['code'].isin(df2['code']), 'VALID', 'INVALID')
>>> df1
code transaction new_col
0 5 0 INVALID
1 6 1 INVALID
2 7 2 INVALID
3 8 3 INVALID
4 9 4 INVALID
5 10 5 INVALID
6 11 6 INVALID
7 12 7 VALID
8 13 8 VALID
9 14 9 VALID