我有一个看起来像这样的数据框:
ID Column1 Column2 Column3
1 cats dog bird
2 dog elephant tiger
3 leopard monkey cat
我想创建一个新列,指示该行中是否存在cat
作为字符串的一部分,以便数据框如下所示:
ID Column1 Column2 Column3 Column4
1 cats dog bird Yes
2 dog elephant tiger No
3 leopard monkey cat Yes
我想这样做而不需要单独评估每个列,因为在实际数据集中有很多列。
答案 0 :(得分:3)
以下应为您解决问题:
df['Column4'] = np.where((df.astype(np.object)=='cat').any(1), 'Yes', 'No')
工作示例:
>>> import pandas as pd
>>> import numpy as np
>>> d = {'ID': [1, 2, 3], 'Column1': ['cat', 'dog', 'leopard'], 'Column2': ['dog', 'elephant', 'monkey'], 'Column3': ['bird', 'tiger', 'cat']}
>>> df = pd.DataFrame(data=d)
>>> df
Column1 Column2 Column3 ID
0 cat dog bird 1
1 dog elephant tiger 2
2 leopard monkey cat 3
>>> df['Column4'] = np.where((df.astype(np.object)=='cat').any(1), 'Yes', 'No')
>>> df
Column1 Column2 Column3 ID Column4
0 cat dog bird 1 Yes
1 dog elephant tiger 2 No
2 leopard monkey cat 3 Yes
编辑: 如果您想检查任何列是否包含特定字符串,可以使用以下命令:
df['Column4'] = df.apply(lambda r: r.str.contains('cat', case=False).any(), axis=1)