我是熊猫新手。
我正在使用True
方法用False
和.isin()
值构建一个数据框。
我的数据框中有7列,与左边的列相比,我检查每一列中是否存在值。使用.isin()
方法效果很好。
问题是我需要检查A列或B列中是否存在值,以将True
或False
值放置在新数据框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()
中?
谢谢您的建议
答案 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