如何确定任何列是否具有特定值

时间:2018-10-03 21:16:30

标签: python string pandas row

我有一个看起来像这样的数据框:

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

我想这样做而不需要单独评估每个列,因为在实际数据集中有很多列。

1 个答案:

答案 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)