在Pandas DataFrame中一次查找三列的平均值

时间:2016-11-30 17:28:30

标签: python pandas dataframe

我有10000行和200列的数据帧; ' DF&#39 ;.所有列都是数字。例如,我需要一次找到三列的平均值;前三列(0:3)的平均值,然后是后三列(3:6)的平均值,依此类推。最后我将以67列结束。但我需要让索引与原始索引相同。 这是我的方法:

l1=list(np.arange(0,200,3))

def func4(row):
    data=row[0:200]

  for i in l1:
     if i!=198:
        dat1=data[i:i+3]
        np.mean(dat1)

    else:
        i=i-1
        dat1=data[i:i+3]
        np.mean(dat1)
return row

df.apply(FUNC4,轴= 1)

但这是我得到的错误,我理解,但我无法纠正它:

ValueError:传递值的形状为(1,67),index表示暗示(1,200) 非常感谢帮助。感谢

1 个答案:

答案 0 :(得分:1)

这应该有效:

# I am creating a random dataframe to test
df=pd.DataFrame(np.random.randint(1,10,(1000,200)))

# Use list comprehension to create list of 3 column means then concatenate all
# I am using `df.ix` to take 3-column slices
pd.concat([df.ix[:,i:i+3].mean(axis=1) for i in range(0,len(df.columns),3)], axis=1)