我认为我已经阅读了所有类似的文章,但没有找到我需要的东西。
我有一堆.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。 Tunnellaenge。 m',名称通常不会更改,所以我会使用:
df['length'] = df.filter(like='laenge')
通常可以,但是如果我想搜索关键字“ laenge”和/或“ length”怎么办?
就像标题'4一样。 Vermessung:Hor。 Ablage der Maschine。毫米”,。在这里,我希望df.filter返回包含'Hor' AND 'Maschine'的列。我该怎么办?我也尝试过'regex'函数,但对我来说不起作用。使用 str.contains()函数会更好吗?
这非常重要,因为我有许多不同的CSV文件,并且不想每次都调整代码。
谢谢。
答案 0 :(得分:1)
使用:
m1 = df.columns.str.contains('laenge')
m2 = df.columns.str.contains('length')
m = m1 & m2
df1 = df.loc[:, m]