我有以下資料框:
index id code data date
0 AZ234 B213 apple 2020-09-01 <- duplicate id, code, data
1 AZ234 B213 apple 2022-02-02 <- duplicate id, code, data
2 AZ234 B213 banana 2020-07-01
3 AZ234 B213 orange 2020-05-11
4 AL612 B309 apple 2020-12-05
5 AL612 B309 banana 2020-07-21
6 AL612 B309 orange 2020-09-21
...
我想創建資料透視表以獲取下表:
id code apple banana orange
AZ234 B213 2020-09-01 2020-07-01 2020-05-11
AL612 B309 2020-12-05 2020-07-21 2020-09-21
...
我曾嘗試使用 pivot_table (pandas) 做到這一點:
pd.pivot_table(df, values='date', index=['id','code'],
columns=['data'])
但我收到此錯誤:
DataError:沒有要聚合的數字型別
我已經閱讀了這篇文章,但它似乎有點不同,因為我不想更改列,而且當我嘗試使用代碼和 id 設定索引時出現錯誤(“ValueError:索引包含重復條目,無法重塑”) .
我的目標是創建以日期作為表值的資料透視表。
uj5u.com熱心網友回復:
每個都有重復項,id, date, data因此有必要添加一些聚合函式:
如果有日期時間:
df['date'] = pd.to_datetime(df['date'])
df.pivot_table(values='date', index=['id','code'], columns=['data'], aggfunc='first')
df.pivot_table(values='date', index=['id','code'], columns=['data'], aggfunc='max')
如果有字串:
print (df['date'].dtype)
df.pivot_table(values='date', index=['id','code'], columns=['data'], aggfunc=','.join)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/444918.html
下一篇:Pandas為系列添加靜態日期
