gpt4 book ai didi

python - 使用不同列类型创建 DataFrame 的有效方法

转载 作者:行者123 更新时间:2023-12-05 08:03:24 26 4
gpt4 key购买 nike

我需要从数字 Postgres 表中读取数据并相应地创建 DataFrame。

Pandas 的默认方式是使用 DataFrame.from_records:

df = DataFrame.from_records(data,
columns=columns,
coerce_float=coerce_float)

data 看起来像:

[(0.16275345863180396, 0.16275346), (0.6356328878675244, 0.6356329)...] 

看起来像:

['a', 'b']

问题是生成的 DataFrame 忽略了原始的 Posgres 类型:double precisionreal

由于我使用巨大的 DataFrame 并且我的数据大部分是真实的,所以我想明确指定列类型。

所以我尝试了:

df = DataFrame.from_records(np.array(data, dtype=columns),
coerce_float=coerce_float)

data 相同,但 columns 看起来像:

[('a', 'float64'), ('b', 'float32')]

(类型作为查询的一部分从 Postgres 中提取并转换为 Numpy dtypes)

这种方法可行,但 DataFrame 的构建速度要慢 2-3 倍(对于 2M 行的 DataFrame 需要几秒钟),因为 np.array 生成由于某种原因非常慢。在现实生活中,我有 10-200 列,大部分是 float32

构造具有指定列类型的 DataFrame 的最快方法是什么?

最佳答案

如果您已经知道数据列及其类型,那么以下格式将有助于生成具有指定数据类型的数据框。

    pd.DataFrame(data, columns = columnList, dtype = np.dtype([('type1','type2')]))

关于python - 使用不同列类型创建 DataFrame 的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73324844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com