繁体   English   中英

使用熊猫检查两列中的任何一列中是否存在值

[英]Checking if value exists in any of two columns with pandas

我是熊猫的新手。

我正在使用.isin()方法构建一个带有TrueFalse值的数据.isin()

我的数据框中有 7 列,与左侧的列相比,我检查每列中是否存在值。 使用.isin()方法效果很好。

问题是我需要检查 A 列或 B 列中是否存在值,以便在我的新数据框列 C 上放置TrueFalse值。

例如:

df_1

A     B     C     D
1     a     1     a
a     b     a     
c     c     c     c
d     1           d

我正在检查 A 列中的值1是否存在于整个 B、C、D 列中,并且我将True语句传递到该列中找到匹配项的那一行。

我正在使用掩码构建新的数据框:

mask_gclid_cloudflare_request_url = final_data.gclid.isin(final_data['Gclid from request url'])
mask_gclid_cloudflare_cookie = final_data.gclid.isin(final_data['Gclid from cookie'])

finalized_export.loc[~mask_gclid_cloudflare_request_url, ['Date from Cloudflare']] = ''
finalized_export.loc[~mask_gclid_cloudflare_cookie, ['Date from Cloudflare']] = ''

我将如何使用.isin()方法检查列 C 中的值1是否存在于列A或列B

谢谢你的建议

如果想要输出更简单的布尔数据帧是按值比较而不是isin

#if 1 is string use '1'
#df1 = df[['A','B']].eq('1')
df1 = df[['A','B']].eq(1)

df1 = (df[['A','B']] == 1)

使用DataFrame.isinDataFrame.isin一个带有1元素列表:

df1 = df[['A','B']].isin([1])

print (df1)
       A      B
0   True  False
1  False  False
2  False  False
3  False   True

对于掩码(系列),使用一一二方法DataFrame.any来测试每行是否至少有一个True

print (df1.any(axis=1))
0     True
1    False
2    False
3     True
dtype: bool

DataFrame.all用于测试每行是否为真:

print (df1.all(axis=1))
0    False
1    False
2    False
3    False
dtype: bool

暂无
暂无

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

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