others - Pandas: 查找包含特定字符串的列

我有一个带列名的数据框,想查找一个包含特定字符串但不完全匹配的字符串,搜索'spike',如'spike-2','hey spike','spiked-in'。

我希望将列名作为字符串或变量返回,以便以后访问df['name']或df[name]。

时间:

只需循环访问DataFrame.columns,这是一个示例,列出匹配的列名称:


import pandas as pd

data = {'spike-2': [1,2,3], 'hey spke': [4,5,6], 'spiked-in': [7,8,9], 'no': [10,11,12]}
df = pd.DataFrame(data)

spike_cols = [col for col in df.columns if 'spike' in col]
print(list(df.columns))
print(spike_cols)

输出:


['hey spke', 'no', 'spike-2', 'spiked-in']
['spike-2', 'spiked-in']

说明:

  1. df.columns返回列名称的列表
  2. [col for col in df.columns if 'spike' in col]用变量col遍历列表df.columns,如果col包含'spike',则将它添加到结果列表中,此语法为

如果只希望得到的数据集与匹配的列相匹配,则可以执行以下操作:


df2 = df.filter(regex='spike')
print(df2)

输出:


 spike-2 spiked-in
0 1 7
1 2 8
2 3 9

...