는 다음과 같이 csv로 설정되어 있다고 가정하자 :
Name,Header-1,Header-2,Header-3
Random,Note, ,
Jack,X,X,
Jane,X, ,
,,,
Name,Header-3,Header-2,Header-1
Random,note, ,
Jeremy,X,X,
Joey, , ,X
당신은 자기 explanotary입니다 다음 코드로이 파일에서 작업 할 수 있습니다
:
import pandas as pd
# Read csv file
df = pd.read_csv("D:/tmp/data.csv", sep=',')
#Find columns which are null, create partitions and group by them
isnull = (df["Name"].isnull())
partitions = (isnull != isnull.shift()).cumsum()
gb = df[~isnull].groupby(partitions)
keys = gb.groups.keys()
# Extract all the dataframes
dfs = [gb.get_group(g) for g in keys]
datas = []
# Set the header as first row for all dataframes that are not the first one
for i,data in enumerate(dfs):
if i!=0: # First dataframe has already set the correct header
data.columns = data.ix[data.index[0]]
data = data.drop(data.index[0])
datas.append(data)
# Concatenate the dataframes and reset the index
df_concat = pd.concat(datas)
df_out = df_concat.reset_index(drop=True)
# Change the order of the columns to get "Name" as first column
cols = df_out.columns.tolist()
cols = cols[-1:] + cols[:-1]
df_out = df_out[cols]
그래서 귀하의 의견은 다음과 같습니다
>>> df
Name Header-1 Header-2 Header-3
0 Random Note
1 Jack X X
2 Jane X
3 NaN NaN NaN NaN
4 Name Header-3 Header-2 Header-1
5 Random note
6 Jeremy X X
7 Joey X
이 예에서는 추출 할 두 번째 데이터 프레임에서 헤더의 순서가 다릅니다.
그리고 당신의 출력은 다음과 같습니다
>>> df_out
Name Header-1 Header-2 Header-3
0 Random Note
1 Jack X X
2 Jane X
3 Random note
4 Jeremy X X
5 Joey X
내가 6 라인 "이름"에서 KeyError를 받고 있어요 - 내가 – Che
당신이 내가 보여준 예제를 시도해 봤어 ... 다른 열 이름을 바꾼? 오류가 발생하는 예제로 질문을 업데이트하십시오. –