string - dtype - str.contains python




Pandas:查找名稱中包含特定字符串的列 (2)

你也可以使用df.columns[df.columns.str.contains(pat = 'spike')]

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

colNames = df.columns[df.columns.str.contains(pat = 'spike')] 

print(colNames)

這將輸出列名: 'spike-2', u'spiked-in'

有關pandas.Series.str.contains更多信息。

所以,我有一個帶有列名的數據框,我想找到一個包含某個字符串的數據框,但是並不完全匹配它。 我正在尋找像'spike-2'這樣的'spike-2''hey spike''spiked-in''spike'部分總是連續的)。

我希望列名稱作為字符串或變量返回,因此我稍後使用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




find