我有一个pandas数据帧:
import pandas as pd
data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'reports_1': [3, 42, 25, 25, 25],
'reports_2': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data)
df
我想做一个布尔查询来询问列名是否包含字符串(即部分匹配):
伪代码示例:
For c in df.columns:
if df.columns[c] contains 'reports':
print('yay')
else:
print('boo')
我想要的伪代码输出:
Boo
Yay
Yay
答案 0 :(得分:3)
我们可以遍历列,只测试字符串是否在列字符串中:
In [14]:
data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'reports_1': [3, 42, 25, 25, 25],
'reports_2': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data)
for col in df:
if 'reports' in col:
print('yay')
else:
print('boo')
boo
yay
yay
另一种方法是从列创建一个系列并使用矢量化str
方法contains
:
In [33]:
pd.Series(df.columns).str.contains('reports').apply( lambda x: 'yay' if x == True else 'boo')
Out[33]:
0 boo
1 yay
2 yay
dtype: object
答案 1 :(得分:2)
df.columns.map(lambda x: "reports" in x and 'yay' or 'boo')