Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫会根据条件向新列添加值_Python_Pandas_Dataframe - Fatal编程技术网

Python 熊猫会根据条件向新列添加值

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

我一直在四处寻找,但找不到我想要的答案,所以我很抱歉问了一个我认为是重复的问题

我有两个数据帧-df1是事务数据列表,df2是一种密钥。df1['code']引用df2中的一列

如果在df1中找到的事务代码在df2中,我想在新列中的df1条目中附加一个值,以标识该事务是有效的。如果代码不在df2中,我想在同一个新列中指出相反的内容

我理解如何使用“for”循环来实现这一点,但我的理解是我应该学会如何使用熊猫而不依赖于它

提前感谢您的帮助

使用
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