Python 熊猫会根据条件向新列添加值
我一直在四处寻找,但找不到我想要的答案,所以我很抱歉问了一个我认为是重复的问题 我有两个数据帧-df1是事务数据列表,df2是一种密钥。df1['code']引用df2中的一列 如果在df1中找到的事务代码在df2中,我想在新列中的df1条目中附加一个值,以标识该事务是有效的。如果代码不在df2中,我想在同一个新列中指出相反的内容 我理解如何使用“for”循环来实现这一点,但我的理解是我应该学会如何使用熊猫而不依赖于它 提前感谢您的帮助 使用Python 熊猫会根据条件向新列添加值,python,pandas,dataframe,Python,Pandas,Dataframe,我一直在四处寻找,但找不到我想要的答案,所以我很抱歉问了一个我认为是重复的问题 我有两个数据帧-df1是事务数据列表,df2是一种密钥。df1['code']引用df2中的一列 如果在df1中找到的事务代码在df2中,我想在新列中的df1条目中附加一个值,以标识该事务是有效的。如果代码不在df2中,我想在同一个新列中指出相反的内容 我理解如何使用“for”循环来实现这一点,但我的理解是我应该学会如何使用熊猫而不依赖于它 提前感谢您的帮助 使用numpy.where(): 样本DF >>
numpy.where()
:
样本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
请显示一个数据帧的示例
df1['new\u col']=df1['code'].isin(df2['ref'])
?
>>> 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