pandas를 사용하는 단일 열에서 여러 열에 대한 사고 프로세스에 문제가 있습니다. 쉼표로 구분 된 최대 10 개의 단어를 포함 할 수있는 기본 열이 있습니다. 이 단어를 분리 할 열이 8 개뿐입니다 (더 이상은 아님).
현재 아래 코드를 사용하여 단어를 여러 열로 분할하고 있습니다. 이 코드는 가장 긴 셀에 얼마나 많은 단어가 있는지 정확히 아는 한 작동합니다. 예 :이 경우 아래의 경우 원본 파일의 셀 중 하나에 정확히 8 개의 단어가 있어야 제대로 작동합니다. 그렇지 않으면 오류가 발생합니다 (Columns must be same length as key). 테스트에서 동일한 수의 단어로 가장 긴 셀을 분할하는 데 필요한 동일한 수의 열이 있어야 함을 발견했습니다. 그 이상도 이하도 아닌.
df[['column1','column2','column3','column4','column5','column6','column7','column8']] =
df['main'].str.split(',',expand=True)
내가보기를 바라는 것은 메인 칼럼의 셀에 얼마나 많은 단어가 있는지 걱정하지 않는 방법입니다. 가장 긴 셀에 6 개 단어가 포함 된 경우 6 개 열로 분할합니다. 가장 긴 셀에 8 개의 단어가 포함 된 경우 8 개 열로 분할합니다. 가장 긴 셀에 10 개의 단어가 포함 된 경우 마지막 두 단어를 삭제하고 나머지는 8 개 열을 사용하여 분할합니다.
원본 파일 기본 열에 대해. 각 세포에 몇 개의 단어가 존재하는지 알 수 없습니다. 나는 단지 8 개의 열을 가지고 있으므로 처음 8 개 (많은 경우)는 열로 분할하는 영광을 얻습니다. 나머지 단어 (있는 경우)는 삭제됩니다.
질문, 단어가있는 가장 긴 셀이 내 열의 수를 초과하지 않는 경우 위 코드에 정확한 양의 열이 있어야하는 이유는 무엇입니까? 뭔가 이해가 안 돼요.
논리에 대한 도움을 주시면 감사하겠습니다.
cols = df[['column1','column2','column3','column4','column5','column6','column7','column8']]
df2 = df['main'].str.split(',',expand=True, n=8)
#df = df.assign(**df2.set_axis(cols[:df2.shape[1]], axis=1))
#-------
if 0 in df2.columns:
df['column1']= np.where(df2[0].isnull(), df['column1'], df2[0])