2017-12-12 12 views
2

Excelスプレッドシートを1つのスプレッドシートに結合していて、組み合わせたときにスプレッドシートのファイル名を最初の列として挿入します。組み合わせるべきPython、PandasでExcelファイルを1に変換し、ファイル名をA列にします。

Excelファイルは、以下のとおりです。20170801.xlsx、20170901.xlsx、20171001.xlsx

これは私が持っているコードです:

working_folder = 'c:\\abc\\' 
files = os.listdir(working_folder) 

files_xls = []; 
for f in files: 
    if f.endswith(".xlsx"): 
     fff = working_folder + f 
     files_xls.append(fff) 

df = pd.DataFrame(); 

for f in files_xls: 
    data = pd.read_excel(f, skip_footer=0) 
    file_date = basename(f).replace(".xlsx", "") 
    #data.index = pd.MultiIndex.from_tuples([("", file_date)] * len(data)) 
    data.index = pd.MultiIndex.from_tuples([(file_date)] * len(data)) 
    df = df.append(data) 

df.to_excel(working_folder + 'final.xls', merge_cells = False) 

問題がラインデータです。 index = pd.MultiIndex ...

私が使用:

enter image description here

私が使用:それはこのようなspreadhsheet

data.index = pd.MultiIndex.from_tuples([(file_date)] * len(data)) 

生成

data.indexの=のpd.MultiIndex.from_tuplesを([ ( ""、file_date)] * len(data))

スプレッドシートを見ていますが、空の列Aは次のようになります。enter image description here

マルチインデクスは使用しないでください。最終的なスプレッドシートはどのように表示されますか?

enter the image description here

ありがとうございます。

+1

は、なぜあなたはマルチインデックスが必要だと思いますか? –

+0

@cᴏʟᴅsᴘᴇᴇᴅ、コメントありがとうございました。私はそれが必要ではないことを知っています。しかし、私は何を使用するかわからない... –

答えて

4

は、私はあなたがMultiIndexを必要といけないと考えている、唯一の変更:

data.index = pd.MultiIndex.from_tuples([(file_date)] * len(data)) 

へ:

data.index = [file_date] * len(data) 
+1

完璧!ご指導ありがとうございます。 –

+1

私は、インデックスがスカラー割り当てをサポートしていないと言いたいと思いましたが、あなたはそれを修正したと思います。 –

+1

@cᴏʟᴅsᴘᴇᴇᴅ - はい、正確です。コメントありがとう。 – jezrael

関連する問題