我對 pandas 和 python 還很陌生,在一些我覺得可能比感覺更直接的問題上遇到了一些問題。
我正在使用 pandas 從 SQL 查詢中創建資料框。此查詢包含聯接和分組依據。運行后結果如下pd.read_sql:
| ID | 地區 | 型別 | 問題代碼 | question_score |
|---|---|---|---|---|
| 1 | 達 | 乙 | FA1 | 1 |
| 1 | 達 | 乙 | FA2 | 3 |
| 1 | 達 | 乙 | FA3 | 6 |
| 2 | 南非 | X | FA1 | 2 |
| 2 | 南非 | X | FA2 | 5 |
| 2 | 南非 | X | FA3 | 3 |
| 3 | PL | 米 | FA1 | 2 |
| 3 | PL | 米 | FA2 | 4 |
| 3 | PL | 米 | FA3 | 5 |
每一行都有一些共同的屬性,例如id,region或type(在每一行上重復 for 每個 distinct id)。
我想要實作的是將這些行“展平”并使用相關值id創建新列,如下所示:question_codequestion_score
| ID | 地區 | 型別 | FA1 | FA2 | FA3 |
|---|---|---|---|---|---|
| 1 | 達 | 乙 | 1 | 3 | 6 |
| 2 | 南非 | X | 2 | 5 | 3 |
| 3 | PL | 米 | 2 | 4 | 5 |
這可以使用熊貓來實作嗎?
uj5u.com熱心網友回復:
- 將識別列添加到pandas索引中
- 然后
unstack()是question_code - 下面的完整代碼和輸出
import pandas as pd
import io
df = pd.read_csv(io.StringIO("""id,region,type,question_code,question_score
1,DA,B,FA1,1
1,DA,B,FA2,3
1,DA,B,FA3,6
2,SA,X,FA1,2
2,SA,X,FA2,5
2,SA,X,FA3,3
3,PL,M,FA1,2
3,PL,M,FA2,4
3,PL,M,FA3,5"""))
df.set_index(["id","region","type","question_code"]).unstack("question_code").droplevel(0,1).reset_index()
| ID | 地區 | 型別 | FA1 | FA2 | FA3 | |
|---|---|---|---|---|---|---|
| 0 | 1 | 達 | 乙 | 1 | 3 | 6 |
| 1 | 2 | 南非 | X | 2 | 5 | 3 |
| 2 | 3 | PL | 米 | 2 | 4 | 5 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/438540.html
