我正在使用一個 pandas 資料框,它有幾列填充了來自同一組的值,類似于:
| 姓名 | 第一輛車 | 第二輛車 | 第三輛車 | 四號車 |
|---|---|---|---|---|
| 湯姆 | 大眾 | 福特 | 本田 | 奧迪 |
| 蒂姆 | 寶馬 | 本田 | 奧迪 | 福特 |
| 山姆 | 奧迪 | 本田 | 本田 | 奧迪 |
| 賬單 | 福特 | 福特 | 空值 | 奧迪 |
| 標記 | 大眾 | 福特 | 本田 | 空值 |
我需要把它變成這樣:
| 制作 | 第一輛車 | 第二輛車 | 第三輛車 | 四號車 |
|---|---|---|---|---|
| 大眾 | 2 | 0 | 0 | 0 |
| 福特 | 1 | 3 | 0 | 1 |
| 本田 | 0 | 2 | 3 | 0 |
| 奧迪 | 1 | 0 | 1 | 3 |
| 寶馬 | 1 | 0 | 0 | 0 |
使用多列 groupby 或使用交叉表似乎可以做到這一點,但我不太清楚如何。我認為 pandas 有一些不錯的技巧可以做到這一點,而無需回圈遍歷每一列(我剛剛開始使用 pandas)?
一些進一步的背景關系以防它影響解決方案 - 一旦我重組了資訊,我需要使用 matplotlib 將其繪制為堆積條形圖,以便我可以使用 matplotlib 的 savefig() 函式以編程方式保存視覺效果。
uj5u.com熱心網友回復:
選擇您想要的列,然后應用.value_counts到它們,例如:
df.filter(regex=f'Car$').apply(pd.value_counts)
這會給你:
First Car Second Car Third Car Fourth Car
Audi 1.0 NaN 1.0 3.0
BMW 1.0 NaN NaN NaN
Ford 1.0 3.0 NaN 1.0
Honda NaN 2.0 3.0 NaN
VW 2.0 NaN NaN NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451515.html
標籤:Python python-3.x 熊猫 数据框 matplotlib
上一篇:如何修復int不可下標
