根据一列的总和将Pandas数据帧划分为较小的块

时间:2017-03-13 12:11:59

标签: python pandas

所以我有一个庞大的Pandas数据框,结构如下:

  x     y   count
blah  blah    4
blah  blah    12
blah  blah    15
...

计数列的最终总和约为48,000。我想将整个数据框分成大约12个不同的块。这种拆分的条件是我希望该块中的列数大约为4,000。因此每个块的长度可以不同,但​​计数列的总和必须大约为4,000。

有没有快速有效的方法来实现这一目标?我当前的尝试涉及遍历数据帧并追加,直到行总和超过4,000但速度很慢:

df_sum = 4000

new_df = pd.DataFrame(columns=['x','y','count'])

i = 1

for index, row in df.iterrows():

     appended_sum = 0

     if appended_sum < df_sum:

        appended_sum += row['count']

        a_df.loc[len(a_df)] = row

    else:

        a_df.to_csv('split_'+str(i)+'.csv', index=False)

        i+=1

        a_df= a_df.iloc[0:0]
        appended_sum = 0

1 个答案:

答案 0 :(得分:1)

从这个例子开始:

@Field("id")
private String userId;

这可行:

      x     y  count
0  blah  blah      4
1  blah  blah     12
2  blah  blah     15
0  blah  blah      4
1  blah  blah     12
2  blah  blah     15
0  blah  blah      4
1  blah  blah     12
2  blah  blah     15