【发布时间】:2017-05-30 10:24:02
【问题描述】:
df=pd.DataFrame([1,4,1,3,2,8,3,6,3,7,3,1,2,9])
我想将df 拆分为指定数量的组,并对每个组中的所有元素求和。比如把df分成4组
1,4,1,3 2,8,3,6 3,7,3,1 2,9
会导致
9
19
14
11
我可以使用df.groupby(np.arange(len(df))//4).sum(),但这不适用于更大的数据帧
例如
df1=pd.DataFrame([1,4,1,3,2,8,3,6,3,7,3,1,2,9,1,5,3,4])
df1.groupby(np.arange(len(df1))//4).sum()
创建 5 个组而不是 4 个
【问题讨论】:
-
df.groupby(np.arange(len(df))//4).sum()的较大 df 有什么问题?什么是问题?对我来说效果很好。 -
@jezrael:第二个 df 的问题在于它创建了 5 个组 [9 19 14 17 7] 而不是 4 个
-
测试是
print (pd.DataFrame([1,4,1,3,2,8,3,6,3,7,3,1,2,9,1,5,3,4]).groupby(np.arange(len(df))//4)[0].apply(list)),我认为它工作正常。 -
@jezrael:谢谢,它适用于第二个数据帧,但它不能推广到其他数据帧,如 pd.DataFrame([1,4,1,3,3,3,1,3 ,1,3,1,4,2,1,3,1,3,12,8,3,6,3,7,3,1,2,4])。问题是我事先不知道 df 将有多少元素,所以我正在寻找一种方法将每个 df 分组到相同数量的组中,而不管它有多少元素
-
我想我明白了 - 每个 DataFrame 中仍然需要
4组?
标签: python pandas dataframe split