あなたは次のように設定された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
この例のヘッダーは、抽出する2番目のデータフレームの順序が異なることに注意してください。
そして、あなたの出力は次のようになります。
>>> 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
私は第六行「名前」でKeyError例外を取得しています - 私は別の列名を入れ替え... – Che
あなたは私が示した例としてみてくださいましたか?質問をエラーが発生している例で更新してください。 –