所以我有一个庞大的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
答案 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