Gra*_*ove 5 python pandas pandas-groupby
我有以下数据:
Invoice NoStockCode Description Quantity CustomerID Country
536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 17850 United Kingdom
536365 71053 WHITE METAL LANTERN 6 17850 United Kingdom
536365 84406B CREAM CUPID HEARTS COAT HANGER 8 17850 United Kingdom
Run Code Online (Sandbox Code Playgroud)
我正在尝试进行分组,因此我需要执行以下操作:
df.groupby(['InvoiceNo','CustomerID','Country'])['NoStockCode','Description','Quantity'].apply(list)
Run Code Online (Sandbox Code Playgroud)
我想得到输出
|Invoice |CustomerID |Country |NoStockCode |Description |Quantity
|536365| |17850 |United Kingdom |85123A, 71053, 84406B |WHITE HANGING HEART T-LIGHT HOLDER, WHITE METAL LANTERN, CREAM CUPID HEARTS COAT HANGER |6, 6, 8
Run Code Online (Sandbox Code Playgroud)
相反,我得到:
|Invoice |CustomerID |Country |0
|536365| |17850 |United Kingdom |['NoStockCode','Description','Quantity']
Run Code Online (Sandbox Code Playgroud)
我尝试了agg和其他方法,但无法将所有列都作为列表加入。我不需要使用列表功能,但是最后我希望将不同的列作为列表。
我目前无法复制您的代码,但我认为:
print (df.groupby(['InvoiceNo','CustomerID','Country'],
as_index=False)['NoStockCode','Description','Quantity']
.agg(lambda x: list(x)))
Run Code Online (Sandbox Code Playgroud)
会给你预期的输出
国际大学联盟
df.groupby(['Invoice','CustomerID'],as_index=False)['Description','NoStockCode'].agg(','.join)
Out[47]:
Invoice CustomerID Description \
0 536365 17850 WHITEHANGINGHEARTT-LIGHTHOLDER,WHITEMETALANTER...
NoStockCode
0 85123A,71053,84406B
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9454 次 |
| 最近记录: |