python - 有没有更快的方法来生成 .csv 文件作为 groupby 和循环的替代方法?
问题描述
我必须生成数十个具有数百万行和数十列的 .csv 文件。我目前正在通过执行groupby
A 列和 B 列并循环以动态生成文件来生成文件to_csv
。下面是我正在尝试做的一个例子。有更快的技术吗?我的实际数据框需要 10 多分钟才能运行,并且变得非常痛苦,这对几个项目都是有益的。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0, 3, size=(10000,3)), columns=list('ABC'))
%timeit for (a,b), x in df.groupby(['A', 'B']): x.to_csv(f'{a}_Invoice_{b}.csv', index=False)
时间流逝:
45.2 ms ± 1.58 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
另外,我创建了一个函数,它有类似的时间,但我想发布它,这样人们可以更轻松地修改它以供%timeit
在答案超过一行代码时使用。
import pandas as pd
import numpy as np
def generate_invoices(df):
for (a,b), x in df.groupby(['A', 'B']):
x.to_csv(f'{a}_Invoice_{b}.csv', index=False)
return
df = pd.DataFrame(np.random.randint(0, 3, size=(10000,3)), columns=list('ABC'))
%timeit generate_invoices(df)
解决方案
推荐阅读
- php - 改变数组顺序的数组的递归差分
- scala - 将键值对的 RDD 保存到 CSV 文件
- r - R不承认一个因素的水平是相同的。有没有办法做到这一点?
- python - 从哪里开始创建一个使用 PyTorch 在张量中保存所需更改的方法?
- c# - SSIS数据流出错时查找列名
- r - 如何将每一行与相应列中的缩放器相乘?
- ruby-on-rails - 过滤时保持 check_box_tag 处于选中状态
- mysql - SQL INSERT TO 语句 - 如何在代码中查看原始文本
- javascript - 某些 UTC 字符串 Javascript 的日期无效
- regex - 将没有扩展名的目录页面重定向到 .htaccess 中的 WITH 扩展名