Python 2.7 返回包含字符串的值的所有列

Python 2.7 返回包含字符串的值的所有列,python-2.7,pandas,Python 2.7,Pandas,我有一个像下面这样的数据帧。我希望找到数据框中包含字符串“abc”的所有列,并返回这些字段的列表,如下面的示例所示。如果我要查找行,我会使用isin,但我不确定如何获取列。任何提示都非常感谢 例如: Print df Field1 Field2 Field3 f_abc 23 dog Df3 bb ju Return Field1 您可以通过对df.columns的列表理解来实现这一点 首先,让我们创建一个示例数据帧: df = pd.DataFr

我有一个像下面这样的数据帧。我希望找到数据框中包含字符串“abc”的所有列,并返回这些字段的列表,如下面的示例所示。如果我要查找行,我会使用isin,但我不确定如何获取列。任何提示都非常感谢

例如:

Print df

Field1  Field2  Field3
f_abc   23      dog
Df3     bb      ju


Return 

Field1

您可以通过对df.columns的列表理解来实现这一点

首先,让我们创建一个示例数据帧:

df = pd.DataFrame(columns=["A", "B", "C"], data=[['abc']*3]*3)
df['D'] = 'ab'
结果:

     A   B   C  D
0   abc abc abc ab
1   abc abc abc ab
2   abc abc abc ab
现在,我们只打印包含“abc”的列:

print([col for col in df.columns if df[col].str.contains("abc").any()])

['A','B','C']

您可以通过对df.columns的列表理解来实现这一点

首先,让我们创建一个示例数据帧:

df = pd.DataFrame(columns=["A", "B", "C"], data=[['abc']*3]*3)
df['D'] = 'ab'
结果:

     A   B   C  D
0   abc abc abc ab
1   abc abc abc ab
2   abc abc abc ab
现在,我们只打印包含“abc”的列:

print([col for col in df.columns if df[col].str.contains("abc").any()])

['A','B','C']

您还可以使用pandas pd.Series.isin,它返回一个布尔序列

mydf = pd.DataFrame(data={'Field1':['f_abc', 21], 'Field2':[23, 'bb'], 'Field3':['dog', 'ju']}, columns=['Field1', 'Field2', 'Field3'])

print([i for i in mydf if mydf[i].isin(['f_abc']).any()])

还没有名声将此添加为评论

您还可以使用pandas pd.Series.isin,它返回一个布尔序列

mydf = pd.DataFrame(data={'Field1':['f_abc', 21], 'Field2':[23, 'bb'], 'Field3':['dog', 'ju']}, columns=['Field1', 'Field2', 'Field3'])

print([i for i in mydf if mydf[i].isin(['f_abc']).any()])

还没有名声将此添加为注释

类似于字典,您可以在df中进行col for col,但回答很好。类似于字典,您可以在df中进行col for col,但回答很好。