我想問一個關于 Pandas 資料透視表的問題。
我一直在嘗試為這種表制作一個資料透視表:
| 部門 | 分數 |
|---|---|
| 我們 | 空值 |
| 我們 | 空值 |
| 我們 | 1 |
| 歐盟 | 空值 |
| 歐盟 | 2 |
| 歐盟 | 2 |
| 歐盟 | 4 |
| 英國 | 空值 |
| 英國 | 空值 |
| 英國 | 空值 |
| 英國 | 4 |
| 英國 | 4 |
最終,我希望這張表是一個如下所示的資料透視表:
| 空值 | 1 | 2 | 4 | |
|---|---|---|---|---|
| 我們 | 2 | 1 | 0 | 0 |
| 歐盟 | 1 | 0 | 2 | 1 |
| 英國 | 3 | 0 | 0 | 2 |
為此,我一直在嘗試執行以下操作:
import pandas as pd
import numpy as np
df = sql("SELECT sector, score FROM database")
df_piv = pd.pivot_table(
df,
index = 'sector',
columns = 'score',
values = 'score',
aggfunc = 'count'
)
但是,這樣做,我不斷收到以下錯誤:
ValueError: Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.
請你幫助我好嗎?
謝謝 :)
uj5u.com熱心網友回復:
我更喜歡使用groupby,你可以使用
>>> df.groupby('sector')['score'].value_counts(dropna=False).unstack(fill_value=0)
score NaN 1.0 2.0 4.0
sector
EU 1 0 2 1
UK 3 0 0 2
US 2 1 0 0
邊注:
如果您不想計算缺失值,
pd.pivot_table(df, index='sector', columns='score', aggfunc=len, fill_value=0)
會成功的。用作len實際函式,因為出于某種原因pivot_table的aggfunc引數似乎不接受groupby.agg/之類的字串快捷方式transform。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439403.html
上一篇:R語言將資料幀轉換為特定格式
下一篇:統計過去14天中特定值的發生次數
