![](/img/trans.png)
[英]How to use groupby on a single column and perform comparisons for multiple columns in Pandas?
[英]Is there a way to groupby multiple columns under a single column in pandas?
我有一張這樣的桌子---
區域 | 列1 | 列2 | 列3 |
---|---|---|---|
達卡 | [1,2,3] | [2,3] | [4,5,6] |
錫爾赫特 | [10,11] | [7,9,10] | [10,13,7] |
我想要這張桌子的形狀——
區域 | 總數 |
---|---|
達卡 | 1個 |
2個 | |
3個 | |
4個 | |
5個 | |
6個 | |
錫爾赫特 | 10 |
11 | |
7 | |
9 | |
13 |
我怎樣才能在 pandas 中做到這一點?
如有必要,將值轉換為列表:
import ast
df.iloc[:, 1:] = df.iloc[:, 1:].applymap(ast.literal_eval)
然后通過DataFrame.set_index
和DataFrame.stack
進行整形,通過Series.explode
分解列表,創建 2 列 DataFrame 最后刪除重復項:
df = (df.set_index('AREA')
.stack()
.explode()
.droplevel(1)
.reset_index(name='total_num')
.drop_duplicates())
print (df)
AREA total_num
0 Dhaka 1
1 Dhaka 2
2 Dhaka 3
5 Dhaka 4
6 Dhaka 5
7 Dhaka 6
8 Sylhet 10
9 Sylhet 11
10 Sylhet 7
11 Sylhet 9
14 Sylhet 13
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.