2017-04-24 95 views
-1

假設你有一堆帶有ID和公司名稱的excel文件。你在一個目錄中有N個excel文件,你可以將它們全部讀入一個數據框,但是,在每個文件中,公司名稱的拼寫稍有不同,並且最終得到一個帶有N + 1列的數據框。熊貓read_excel,csv;名稱列名映射器?

有沒有方法來創建例如列名的映射:

col_mappings = { 
    'company_name': ['name1', 'name2', ... , 'nameN], 
} 

所以,當你運行read_excel可以公司名義的各種不同的可能性,映射到只有一個列?你也可以用任何類型的數據文件來做到這一點嗎?例如。 read_csv等..

+1

沒有[MCVE](https://stackoverflow.com/help/mcve)就很難回答這個問題。 – Craig

+1

是否有理由不能在'read_csv'之後重命名列? –

+0

@StephenRauch - 我做的是,我已經寫了一個「合併」函數,並且合併並重命名了所有有問題的字段;所有這些都是在批量加載之後。我只是好奇,如果有其他方法。 – spitfiredd

回答

0

您是否在逐個讀取文件後連接文件?如果是,您可以在閱讀文件後簡單地更改列名。從你的問題,我假設你的數據框只包含兩列 - Id和CompanyName。所以,你可以簡單地通過索引來改變它。

df = pd.read_csv(one_file) 
df.rename(columns={df.columns[1]:'company_name'}) 

然後將其連接到原始數據幀。

否則,簡單地給出列名讀,

df = pd.read_csv(one_file, names=['Id','company_name']) 

然後從DF,因爲它包含原始列名刪除第一行。

它可以在.csv和.xlsx文件上執行。