想象一下,我在Ipython中有如下的数据帧:
df = pd.DataFrame({
'A' : ['1', '1', '1', '1','1', '1', '2', '2', '2', '2', '2', '2'],
'B' : ['00:00', '00:10', '00:20', '00:30','01:10', '01:20','00:00', '00:10', '00:20', '00:30','01:10', '01:20',],
'C' : [2,3,4,2,4,5,6,7,1,5,6,4]}
)
我需要的是右侧结果:它是由A组分组然后计算每组的每2(n)行的平均值。我需要为超过4K组的超大规模数据集做这件事。
我尝试使用Pandas,我认为它可能是一个有用的库。
答案 0 :(得分:1)
此解决方案适用于您的示例
df.groupby(['A',(df.index/2).astype(int)])['C'].mean()
编辑:更多功能的解决方案。独立于指数:
g1 =(df.groupby(['A'])['B'].rank()/2).astype(int)
df.groupby(['A',g1])['C'].mean()
答案 1 :(得分:0)
我不知道熊猫,但这里是Python。
A = ['1', '1', '1', '1','1', '1', '2', '2', '2', '2', '2', '2'],
B = ['00:00', '00:10', '00:20', '00:30','01:10', '01:20','00:00', '00:10', '00:20', '00:30','01:10', '01:20',],
C = [2,3,4,2,4,5,6,7,1,5,6,4]}
return [(a, (b0+b1)/2) for a, b0, b1 in zip(A[::2], B[::2], B[1::2])]
B[::2]
slice notation表示"我希望列表中的所有其他元素,从头开始",而B[1::2]
表示"我想要每一个其他元素,从B[1]
"。
zip
function接受多个序列并返回元组的列表(或者,在Python 3中,迭代器),从每个序列中一次获取一个元素。