[英]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.