답변:
를 반복 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']
설명:
df.columns
열 이름 목록을 반환합니다[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
FYI가하는 일입니다 (원한다면 정규식을 제공 할 수도 있습니다)
df[df.columns.drop(spike_cols)]
이 DataFrame
없으면 spike_cols
원하지 않는 정규 표현식을 사용하여 얻을 수 있습니다.
df[[col for col in df.columns if "spike" in col]]
이 답변 은 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)
'스파이크 -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', 'spiked-in'
pandas.Series.str . 에 대해 자세히 알아 보십시오 .
# select columns containing 'spike'
df.filter(like='spike', axis=1)
이름, 정규식으로 선택할 수도 있습니다. 참조 : pandas.DataFrame.filter
시작, 포함 및 종료를 기반으로 이름 및 하위 설정 가져 오기 :
# from: /programming/21285380/find-column-whose-name-contains-a-specific-string
# from: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.contains.html
# from: https://cmdlinetips.com/2019/04/how-to-select-columns-using-prefix-suffix-of-column-names-in-pandas/
# from: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.filter.html
import pandas as pd
data = {'spike_starts': [1,2,3], 'ends_spike_starts': [4,5,6], 'ends_spike': [7,8,9], 'not': [10,11,12]}
df = pd.DataFrame(data)
print("\n")
print("----------------------------------------")
colNames_contains = df.columns[df.columns.str.contains(pat = 'spike')].tolist()
print("Contains")
print(colNames_contains)
print("\n")
print("----------------------------------------")
colNames_starts = df.columns[df.columns.str.contains(pat = '^spike')].tolist()
print("Starts")
print(colNames_starts)
print("\n")
print("----------------------------------------")
colNames_ends = df.columns[df.columns.str.contains(pat = 'spike$')].tolist()
print("Ends")
print(colNames_ends)
print("\n")
print("----------------------------------------")
df_subset_start = df.filter(regex='^spike',axis=1)
print("Starts")
print(df_subset_start)
print("\n")
print("----------------------------------------")
df_subset_contains = df.filter(regex='spike',axis=1)
print("Contains")
print(df_subset_contains)
print("\n")
print("----------------------------------------")
df_subset_ends = df.filter(regex='spike$',axis=1)
print("Ends")
print(df_subset_ends)