Python GroupBy对象,其中的条目可以属于多个组
从它所支持的方法来看,在派生的GroupBy对象中多次出现的原始数据帧/序列的标签似乎没有任何问题。例如,是否确实可以从iterable列(如中的)构造GroupBy对象g 这样g将表示一个GroupBy对象,其中a的值中的每个条目对应一个条目?也就是说,我得到的结果是Python GroupBy对象,其中的条目可以属于多个组,python,pandas,Python,Pandas,从它所支持的方法来看,在派生的GroupBy对象中多次出现的原始数据帧/序列的标签似乎没有任何问题。例如,是否确实可以从iterable列(如中的)构造GroupBy对象g 这样g将表示一个GroupBy对象,其中a的值中的每个条目对应一个条目?也就是说,我得到的结果是 >>> x.iterable_groupby('a').size() a 0 1 1 2 2 1 >>> x.iterable_groupby('a').mean() b 0 1.0
>>> x.iterable_groupby('a').size()
a
0 1
1 2
2 1
>>> x.iterable_groupby('a').mean()
b
0 1.0
1 1.5
2 2.0
您应该将数据框重塑为整洁的数据集。经常要求对零件进行整形 在整洁的数据集中,每一行应该代表一条记录。为此,您可以创建如下“grouper”列:
x['a'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('grouper')
Out:
grouper
0 0
0 1
1 1
1 2
如果将其与原始数据帧合并,则可以根据需要对其进行分组:
x['a'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('grouper').join(x).groupby('grouper').mean()
Out:
b
grouper
0 1.0
1 1.5
2 2.0
重塑部分不是很有效,但据我所知,熊猫还没有提供更好的方法 您应该将数据框重塑为一个整洁的数据集。经常要求对零件进行整形 在整洁的数据集中,每一行应该代表一条记录。为此,您可以创建如下“grouper”列:
x['a'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('grouper')
Out:
grouper
0 0
0 1
1 1
1 2
如果将其与原始数据帧合并,则可以根据需要对其进行分组:
x['a'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('grouper').join(x).groupby('grouper').mean()
Out:
b
grouper
0 1.0
1 1.5
2 2.0
重塑部分不是很有效,但据我所知,熊猫还没有提供更好的方法