按计数将Pandas数据帧拆分为行

时间:2016-01-25 20:22:57

标签: python csv pandas

我需要将Pandas中的数据输出到CSV文件中,以便与第三方开发的流程进行交互。

该过程要求我在文件中传递的记录不超过100,000,否则会导致问题(速度慢,可能是崩溃)。

那就是说,如何在Pandas中编写一些数据帧并将其拆分为100,000个记录帧?除了导出的数据帧将是父数据帧的子集之外,没有什么不同。

我认为我可以用这样的东西做一个循环,但我认为它会非常低效。

首先,取recordcount=len(df.index)获取记录数,然后循环,直到我使用

之类的东西到达那里
df1 = df[currentrecord:currentrecord+100000,]

然后将其导出为CSV文件

必须有一种更简单的方法。

2 个答案:

答案 0 :(得分:1)

你可以尝试这样的smth:

def save_df(df, chunk_size=100000):
    df_size=len(df)
    for i, start in enumerate(range(0, df_size, chunk_size)):
        df[start:start+chunk_size].to_csv('df_name_{}.csv'.format(i))

答案 1 :(得分:1)

您可以添加一个包含组的列,然后使用函数groupby:

df1['Dummy'] = [a for b in zip(*[range(N)] * 100000) for a in b][:len(df1)]

其中N设置为足够大的值,最小值为:

N = int(np.ceil(df1.len() / 100000))

然后按该列分组并应用函数to_csv():

def save_group(df):
    df.drop('Dummy', axis=1).to_csv("Dataframe_" + str(df['Dummy'].iloc[0]) + ".csv")

df1.groupby('Dummy').apply(save_group)