我有14,000个数据帧,每个数据帧有30,000行。一个例子df看起来像这样
urban restricted speed_bin
True False 0-2.5
True False 0-2.5
True False 0-2.5
True True 0-2.5
True False 2.5-4.5
我需要在所有数据帧上聚合数据,但不能将其全部保存在内存中。我想计算每个数据帧的唯一行组合。对于单个数据帧,我可以做
df.groupby(['urban','restricted','speed_bin']).size().reset_index() \
.rename(columns={0:'count'})
urban restricted speed_bin count
0 False False 0-2.5 45
1 False False 2.5-7.5 12
2 False False 7.5-12.5 16
3 False False 12.5-17.5 20
4 False False 17.5-22.5 4
我如何转换此内容并从speed_bin
组合中创建列名,同时使计数列成为行内容,并留下urban
和speed_bin
列?请记住,数据框可能没有其他数据框可能具有的可能组合的实例。
所以,最后我会有四行对应城市和限制的组合以及相应的速度箱数。
提前致谢!
答案 0 :(得分:0)
df.set_index(['urban', 'restricted', 'speed_bin'])['count'].unstack()
返回
speed_bin 0-2.5 12.5-17.5 17.5-22.5 2.5-7.5 7.5-12.5
urban restricted
False False 45 20 4 12 16
答案 1 :(得分:0)
一种方法是:
df.pivot_table(index=['urban', 'restricted'], values=['count'], columns=['speed_bin'])
返回:
# count
# speed_bin 0-2.5 12.5-17.5 17.5-22.5 2.5-7.5 7.5-12.5
# urban restricted
# False False 45 20 4 12 16