我有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) 非常感谢帮助。感谢
答案 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)