首页 > 解决方案 > 在标头 python pandas 中搜索部分字符串

问题描述

我想我已经阅读了所有类似的帖子,但还没有找到我需要的东西。

我有一堆 .csv 文件,它们原则上相似,但可能有一些不同的标题名称,列的位置不同等。我使用 pd.read_csv 调用它们:

df = pd.read_csv('MyFile.csv', delimiter=';')

这是示例 csv 文件头的一部分:

Index(['1. Datum', '2. Zeit', '3. Tunnellaenge. m', '4. Vermessung: Hor. Ablage der Maschine. mm', '5. Vermessung: Vert. Ablage der Maschine. mm', ………... '21. SR:Drehzahl. rpm', '22. SR:Erddruck Schild. bar', '23. STZ:Gesamtkraft. kN', 'Unnamed: 23'], dtype='object'

我希望我的代码查看标题并找到我想要的列(基于部分字符串)。例如,我总是需要第 '3 列。隧道。m',名称通常不会改变,所以我会使用:

df['length'] = df.filter(like='laenge')

它通常有效,但如果我想搜索关键字“laenge”和/o“长度”怎么办?

就像标题'4的情况一样。Vermessung:霍尔。机器烧蚀。毫米', . 在这里,我希望 df.filter 返回包​​含'Hor' AND 'Maschine'的列。我怎么能做到?我也尝试了“正则表达式”功能,但它对我不起作用。使用str.contains()函数会更好吗?

这非常重要,因为我有许多不同的 CSV 文件,并且不想每次都调整代码。

谢谢你。

标签: pythonpandasdataframe

解决方案


采用:

m1 = df.columns.str.contains('laenge')
m2 = df.columns.str.contains('length')
m = m1 & m2

df1 = df.loc[:, m]

推荐阅读