熊猫根据条件为新栏增加价值

时间:2019-10-29 17:16:55

标签: python pandas dataframe

我一直在搜索,但是找不到我想要的答案,因此我很抱歉问我想像的是重复性问题。

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

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

我了解如何使用“ for”循环执行此操作,但是我的理解是我应该学习如何使用熊猫而不依赖于此。

预先感谢您的帮助!

1 个答案:

答案 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