检查两列中是否有熊猫值

时间:2019-12-05 07:30:01

标签: python pandas

我是熊猫新手。

我正在使用True方法用False.isin()值构建一个数据框。

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

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

例如:

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']] = ''

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

谢谢您的建议

1 个答案:

答案 0 :(得分:3)

如果要在输出简化器中使用布尔型DataFrame,则按不带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.isin仅使用1粘贴一个元素列表:

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

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

对于遮罩(系列),如果每行至少有一个True,请使用一种一对二方法DataFrame.any进行测试:

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

DataFrame.all测试每行是否为True:

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