我需要将Pandas中的数据输出到CSV
文件中,以便与第三方开发的流程进行交互。
该过程要求我在文件中传递的记录不超过100,000
,否则会导致问题(速度慢,可能是崩溃)。
那就是说,如何在Pandas中编写一些数据帧并将其拆分为100,000个记录帧?除了导出的数据帧将是父数据帧的子集之外,没有什么不同。
我认为我可以用这样的东西做一个循环,但我认为它会非常低效。
首先,取recordcount=len(df.index)
获取记录数,然后循环,直到我使用
df1 = df[currentrecord:currentrecord+100000,]
然后将其导出为CSV文件
必须有一种更简单的方法。
答案 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)