繁体   English   中英

pandas 根据条件将值添加到新列

[英]pandas add value to new column based on condition

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

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

如果在 df1 中找到的事务代码在 df2 中,我想 append 在一个新列中为该 df1 条目提供一个值,以表明该事务是有效的。 如果代码不在 df2 中,我想在同一新列中指出相反的情况。

我了解如何使用“for”循环来做到这一点,但我的理解是我应该学习如何使用 pandas 而不依赖它。

在此先感谢您的帮助!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM