IT story

이름에 특정 문자열이 포함 된 열 찾기

hot-time 2020. 8. 18. 08:20
반응형

이름에 특정 문자열이 포함 된 열 찾기


열 이름이있는 데이터 프레임이 있고 특정 문자열을 포함하지만 정확히 일치하지 않는 데이터 프레임을 찾고 싶습니다. 내가 찾고 있어요 'spike'열 이름이 좋아에 '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]df.columns변수가 있는 목록 반복하고 포함 col된 경우 결과 목록에 추가합니다 . 이 구문은 목록 이해 입니다.col'spike'

일치하는 열이있는 결과 데이터 세트 만 원하는 경우 다음을 수행 할 수 있습니다.

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

산출:

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

이 답변 은 DataFrame.filter 메서드를 사용하여 목록 이해없이이를 수행합니다.

import pandas as pd

data = {'spike-2': [1,2,3], 'hey spke': [4,5,6]}
df = pd.DataFrame(data)

print(df.filter(like='spike').columns)

'spike-2'만 출력합니다. 위의 의견에서 일부 사람들이 제안한 것처럼 정규식을 사용할 수도 있습니다.

print(df.filter(regex='spike|spke').columns)

두 열을 모두 출력합니다. [ 'spike-2', 'hey spke']


당신은 또한 사용할 수 있습니다 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 에 대한 추가 정보 .


# select columns containing 'spike'
df.filter(like='spike', axis=1)

이름, 정규식으로 선택할 수도 있습니다. 참조 : pandas.DataFrame.filter


이 코드를 사용할 수도 있습니다.

spike_cols =[x for x in df.columns[df.columns.str.contains('spike')]]

참고URL : https://stackoverflow.com/questions/21285380/find-column-whose-name-contains-a-specific-string

반응형