【发布时间】:2022-01-06 15:52:45
【问题描述】:
原始数据框为:
import pandas as pd
array = {'id': [1, 1, 1, 1, 2, 3],
'color': ['yellow', 'red', 'yellow', 'red', 'yellow', 'white']}
df = pd.DataFrame(array)
df
id color
1 yellow
1 red
1 yellow
1 red
2 yellow
3 white
我已使用 get_dummies 将其转换为以下数据框:
df = pd.get_dummies(df, prefix='', prefix_sep='')
df
id red white yellow
0 1 0 0 1
1 1 1 0 0
2 1 0 0 1
3 1 1 0 0
4 2 0 0 1
5 3 0 1 0
我要 groupby() 列'id':
df.groupby(['id']).max()
red white yellow
id
1 1 0 1
2 0 0 1
3 0 1 0
但是,我的原始数据框是 8,000 行 x 1,500,000 列,这使得这个操作太慢了。
关于如何使其更快的任何想法?
【问题讨论】:
-
你的数据框非常宽的数据模型是什么?
-
数据模型是什么意思?
-
8000 行中有多少组?
-
我更新了答案
-
这有帮助吗: :
df.groupby([*df]).size().clip(upper=1).unstack('color', fill_value=0)
标签: python pandas group-by pandas-groupby