DataFrame的groupby支持按表中列的列表进行分组,例如:
from pandas import DataFrame as DF
data2 = [{'a':{'x':1,'y':2},'b':2, 'x0':1},{'a':{'x':3,'y':4},'b':4, 'x0':3},{'a':{'x':1,'y':6},'b':6, 'x0':1}]
(为了便于说明,注“x0”列与嵌套dict中的“x”重复)
其工作原理如下:
DF(data2).groupby(['x0','b']).size().unstack()
如何用嵌套的'x'
代替'x0'
来模拟这种行为?你知道吗
我尝试了一种使用lambda
输出元组的方法:
DF(data2).groupby(lambda i: (data2[i]['a']['x'],data2[i]['b'])).size()
(1, 2) 1
(1, 6) 1
(3, 4) 1
dtype: int64
其中data2[i]['x0']
也用作第一个元组元素。在这两种情况下unstack
抛出:
AttributeError: 'Index' object has no attribute 'remove_unused_levels'
因此列/dict键名没有得到正确处理。是否有就地解决方法(即不设置新变量或数据帧)?你知道吗
使用pd.DataFrame.from\ U目录():
输出
我想如果您想使用
lambda expression
,您可以,但它不会比第一种方法快:相关问题 更多 >
编程相关推荐