2017-06-13 116 views
0

合併我一個數據幀,看起來像這樣:重塑熊貓據幀的郵件在Word

Customer ID  Invoice ID Invoice Total Customer Total 
8063863   110100456  41,47   248,82 
8063863   110100677  41,47   248,82 
8063863   110100838  41,47   248,82 
8063863   110101106  41,47   248,82 
8063863   110101259  41,47   248,82 
8063863   110101401  41,47   248,82 

我想什麼有是這樣的:

Customer ID Invoice_1 Invoice_Total_1 Invoice_2 Invoice_Total_2 ... Customer_Total 
8063863  110100456    41,47 110100677    41,47   248,82 

我會喜歡將數據框導出到csv並在Word到郵件中使用它合併不同客戶端的摘要。

我使用pivot_table在Pandas中添加了客戶總數,但是我被困在Dataframe的扁平化中。

+0

希望這鏈接可以幫助https://stackoverflow.com/questions/34641615/concatenate-multiple-rows-to-one-單排大熊貓 – Wen

+0

謝謝!我會檢查一下。不知怎的,熔化和堆疊到框架上應該會做到這一點。我會看看我是否可以通過一個唯一的客戶ID和多個客戶ID進行操作。 –

回答

1

讓我們試試這個:

def f(x): 
    n,i = pd.factorize(x['Invoice ID']) 
    df1 = pd.DataFrame([x.loc[(x['Invoice ID']==i.values),'Invoice Total'].values], columns=(n+1).astype(str)).add_prefix('Invoice_Total_') 
    df2 = pd.DataFrame([i.values],columns=(n+1).astype(str)).add_prefix('Invoice_') 
    return pd.concat([df1,df2],axis=1).assign(Customer_Total=x['Customer Total'].max()),drop=True) 

df_out = df.groupby('Customer ID').apply(f).reset_index(-1,drop=True) 

輸出:

  Invoice_Total_1 Invoice_Total_2 Invoice_Total_3 Invoice_Total_4 \ 
Customer ID                 
8063863    41,47   41,47   41,47   41,47 

      Invoice_Total_5 Invoice_Total_6 Invoice_1 Invoice_2 Invoice_3 \ 
Customer ID                  
8063863    41,47   41,47 110100456 110100677 110100838 

      Invoice_4 Invoice_5 Invoice_6 Customer_Total 
Customer ID             
8063863  110101106 110101259 110101401   248,82 
+0

謝謝你的答案,精美的作品。我必須真正加強對熊貓的理解 –

+0

不客氣。 –