給定以下測驗檔案:
我需要匯入有4張表的.xlsx檔案(這只是一個例子,我的原始檔案有更多的表),在每個df中添加一列,并標明它所屬的表的名稱,然后將得到的df與那些有相同列數的df連接起來。
在這個例子中,我有兩個有兩列的作業表(我希望這些作業表在同一個資料框中),另外兩個作業表各有一列(我希望這些作業表只在一個資料框中)。
到目前為止我都做了些什么?
my_dict = pd.read_excel('test.xlsx', header=0, sheet_name=None) #the output is a dictionary[/span]。
for key, df in my_dict.items()。
df['sheet_name'] = key # 這段代碼在每個資料框架中創建了一個新的列,包含作業表的名稱。
我不知道如何將字典中的資料框架連接起來,按照每個資料框架的列數來分組。這里的結果將是兩個不同的 df。
uj5u.com熱心網友回復:
讀入資料:
xlsx = pd.read_excel('test.xlsx', sheet_name = None)
創建兩個變數,一個包含有兩列的資料框,另一個包含只有一列的資料框 :
two = {key:value for key,value in xlsx. items() if value.columns.size == 2}。
one = {key:value for key,value in xlsx.items() if value.columns.size ==1}.
將two和one單獨連接起來:
two = pd.concat(two, names = ['sheet_name', None]).droplevel(-1) .
二
紙張名稱 A B C D
0 JFK 1.0 2.0 NaN NaN
1 JFK 5.0 6.0 NaN NaN
2 MIA NaN NaN 1.0 1.0 NaN
3 MIA NaN NaN 2.0 2.0
one = pd.concat(one, names = ['sheet_name', None].droplevel(-1).reset_index()
一個
紙張名稱 z
0SJU 1.
1SJU 2
2 BCN 3
3 BCN 4
如果你想讓帶有兩列的資料框架具有相同的列名,你可以在字典過濾階段進行預處理:
two = {key:value.set_axis(['A, 'B], axis = ' columns)
for key,value in xlsx.items()
if value.columns.size == 2}
#連接將導致只有三列:
two = pd.concat(two, names = ['sheet_name', None].droplevel(-1).reset_index()
二
紙張名稱 A B
0 JFK 1 2
1 肯尼迪 5 6
2 MIA 1 1
3 MIA 2 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311643.html
標籤:
上一篇:讀取檔案時允許月度格式的變化
