[PYTHON] 여러 문자열이있는 열에서 get_dummies 형식 데이터 프레임을 만드는 가장 빠른 방법
PYTHON여러 문자열이있는 열에서 get_dummies 형식 데이터 프레임을 만드는 가장 빠른 방법
나는 문자열 'col2'를 가지고 있는데, 문자열 목록이있다. 현재 가지고있는 코드는 너무 느립니다. 약 2000 개의 고유 한 문자열 (아래 예제의 문자)과 4000 개의 행이 있습니다. 2000 열과 4000 행으로 끝납니다.
In [268]: df.head()
Out[268]:
col1 col2
0 6 A,B
1 15 C,G,A
2 25 B
인형 형식을 얻을 수있는 빠른 방법이 있습니까? 각 문자열에는 고유 한 열이 있고 각 문자열의 열에는 col2에 해당 문자열이있는 경우 0 또는 1이 있습니다.
In [268]: def get_list(df):
d = []
for row in df.col2:
row_list = row.split(',')
for string in row_list:
if string not in d:
d.append(string)
return d
df_list = get_list(df)
def make_cols(df, lst):
for string in lst:
df[string] = 0
return df
df = make_cols(df, df_list)
for idx in range(0, len(df['col2'])):
row_list = df['col2'].iloc[idx].split(',')
for string in row_list:
df[string].iloc[idx]+= 1
Out[113]:
col1 col2 A B C G
0 6 A,B 1 1 0 0
1 15 C,G,A 1 0 1 1
2 25 B 0 1 0 0
이것은 그것을위한 나의 현재 코드이지만 너무 느립니다.
어떤 도움을 주셔서 감사합니다!
해결법
-
==============================
1.당신이 사용할 수있는:
당신이 사용할 수있는:
>>> df['col2'].str.get_dummies(sep=',') A B C G 0 1 1 0 0 1 1 0 1 1 2 0 1 0 0
데이터 프레임에 참여하려면 :
>>> pd.concat([df, df['col2'].str.get_dummies(sep=',')], axis=1) col1 col2 A B C G 0 6 A,B 1 1 0 0 1 15 C,G,A 1 0 1 1 2 25 B 0 1 0 0
from https://stackoverflow.com/questions/28121682/quickest-way-to-make-a-get-dummies-type-dataframe-from-a-column-with-a-multiple by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 모든 하위 디렉토리를 포함하여 디렉토리에서 파일을 얻는 방법 (0) | 2018.10.19 |
---|---|
[PYTHON] \ n을 <br />으로 바꾸십시오. (0) | 2018.10.19 |
[PYTHON] PyBrain을 사용한 신경망 훈련은 수렴하지 않습니다. (0) | 2018.10.19 |
[PYTHON] Python : 단어 내에서 가장 긴 문장 검색 및 단어 / 문자열 내의 문장 검색 (0) | 2018.10.19 |
[PYTHON] 파이썬 def 함수 : 함수의 끝을 어떻게 지정합니까? (0) | 2018.10.19 |