小编Jam*_*mes的帖子

将python迭代器输出转换为pandas数据帧的最快方法

我有一个生成器,它返回我想要转换为索引的pandas数据帧的未知数量的数据行.我所知道的最快的方法是将CSV写入磁盘,然后通过'read_csv'解析.我知道创建一个空数据帧然后不断追加新行是没有效率的.我无法创建预先调整大小的数据帧,因为我不知道将返回多少行.有没有办法将迭代器输出转换为pandas数据帧而无需写入磁盘?

python pandas

6
推荐指数
1
解决办法
6800
查看次数

带有自定义 agg 函数的 pandas groupby 太慢或使用太多内存

我在 15M 行数据帧上运行 groupby,按 2 个键(每个键最多 30 个字符)进行分组,并应用返回多个值的自定义聚合函数,然后写入 CSV。我有两种方法,一种方法耗尽内存并失败,另一种方法太慢(需要超过 24 小时才能运行这么远......)。简化代码如下。

是否有: - 有什么方法可以减少方法 1 的内存使用,或者 - 有什么方法可以加快方法 2 中的迭代器速度

import pandas as pd
import numpy as np

def myfunct(x):
    # test function
    return 1,2,3

# fake the dataset
df = pd.DataFrame(np.random.randn(1500,3), columns=['a', 'b', 'c'])

df['key1'] = np.random.choice(['A','B','C','D','E'], df.shape[0])
df['key2'] = np.random.choice(['A','B','C','D','E'], df.shape[0])

# group and aggregate
grouped = df.groupby(['key1', 'key2'], sort=False)


#
#  APPROACH 1.
#
# Works but runs out of memory on 15M row datafram with 30 …
Run Code Online (Sandbox Code Playgroud)

python aggregation pandas

5
推荐指数
0
解决办法
1589
查看次数

标签 统计

pandas ×2

python ×2

aggregation ×1