[英]Pandas Pivot table, how to put a series of columns in the values attribute
首先,我很抱歉! 這是我第一次使用堆棧溢出,所以我希望我做得對! 我搜索了但找不到我想要的東西。 我對pandas和python也很陌生:)我將嘗試使用一個示例,我將嘗試弄清楚。
我有一個包含30列的數據框,其中包含有關購物車的信息,其中1列(訂單)具有2個值,或者兩個值都在進行中。 我有20列內容,例如蘋果,橙子,香蕉……而且我需要知道一個蘋果完整的順序是多少次,而進行中的順序是多少次。 我決定使用具有匯總函數計數的數據透視表。 這將是數據框的一個小示例:
Order | apple | orange | banana | pear | pineapple | ... |
-----------|-------|--------|--------|------|-----------|------|
completed | 2 | 4 | 10 | 5 | 1 | |
completed | 5 | 4 | 5 | 8 | 3 | |
iProgress | 3 | 7 | 6 | 5 | 2 | |
completed | 6 | 3 | 1 | 7 | 1 | |
iProgress | 10 | 2 | 2 | 2 | 2 | |
completed | 2 | 1 | 4 | 8 | 1 | |
我有我想要的輸出,但是我正在尋找的是一種選擇很多列而不必手動鍵入的更優雅的方法。
df.pivot_table(index=['Order'], values=['apple', 'bananas', 'orange', 'pear', 'strawberry',
'mango'], aggfunc='count')
但是我想選擇大約15列,因此,我確定沒有一種簡單的方法可以通過使用列號或其他方式來一次輸入15次。 假設我要從6到15中選擇列。
我嘗試過使用values = [df.columns [6:15]]之類的東西,也嘗試過使用df.iloc,但是正如我所說的,我很新,所以我可能使用了錯誤的東西或制作了愚蠢的東西。 !
有沒有辦法讓他們有秩序? 因為在我的回答中,它們似乎是按字母順序排列的,所以我想保持列的順序。 所以應該是蘋果,橙子,香蕉...
Order Completed In progress
apple 92 221
banana 102 144
mango 70 55
我只是在尋找一種改進我的代碼的方法,希望我不會造成太多混亂。 謝謝!
我認為您可以使用:
#if need select only few columns - df.columns[1:3]
df = df.pivot_table(columns=['Order'], values=df.columns[1:3], aggfunc='count')
print (df)
Order completed iProgress
apple 4 2
orange 4 2
#if need use all column, parameter values can be omit
df = df.pivot_table(columns=['Order'], aggfunc='count')
print (df)
Order completed iProgress
apple 4 2
banana 4 2
orange 4 2
pear 4 2
pineapple 4 2
df = df.pivot_table(columns=['Order'], aggfunc=len)
print (df)
Order completed iProgress
apple 4 2
banana 4 2
orange 4 2
pear 4 2
pineapple 4 2
#solution with groupby and transpose
df = df.groupby('Order').count().T
print (df)
Order completed iProgress
apple 4 2
orange 4 2
banana 4 2
pear 4 2
pineapple 4 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.