2017-06-13 149 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

不客气。 –