Pandas DataFrame 문자열 항목을 별도의 행으로 분해(분할)
Pandas에서 일반적인 요구 사항은 쉼표로 구분된 값을 텍스트 문자열 열을 선택하고 각 항목에 대해 새 행을 만듭니다. 이는 다양한 방법을 통해 달성할 수 있습니다.
Series.explode() 또는 DataFrame.explode()
Pandas 버전 0.25.0 이상의 경우 시리즈입니다. explode() 및 DataFrame.explode() 메서드는 CSV와 유사한 폭발을 수행하는 편리한 방법을 제공합니다. 열:
단일 열의 경우:
df.explode('column_name')
여러 열의 경우:
df.explode(['column1', 'column2']) # Pandas 1.3.0+
일반 벡터화된 함수
보다 다양한 벡터화된 접근 방식 일반 열과 목록 열 모두에 대해 작동하는 방법은 다음과 같습니다.
def explode(df, lst_cols, fill_value='', preserve_index=False): # Convert CSV string columns to list columns for col in lst_cols: df[col] = df[col].str.split(',') # Extract all non-list columns idx_cols = df.columns.difference(lst_cols) # Calculate list lengths lens = df[lst_cols[0]].str.len() # Create exploded DataFrame result = (pd.DataFrame({ col: np.repeat(df[col].values, lens) for col in idx_cols }, index=np.repeat(df.index.values, lens)) .assign(**{col: np.concatenate(df.loc[lens>0, col].values) for col in lst_cols})) # Handle empty list rows if (lens == 0).any(): result = result.append(df.loc[lens==0, idx_cols], sort=False).fillna(fill_value) # Revert index order and reset index if requested result = result.sort_index() if not preserve_index: result = result.reset_index(drop=True) return result
애플리케이션
CSV 열:
df['var1'] = df['var1'].str.split(',')
다중 목록 열:
explode(df, ['num', 'text'], fill_value='')
위 내용은 Pandas DataFrame 문자열 항목을 별도의 행으로 분해(분할)하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!