DataFrame 的 append 操作每次都会返回一个全新的对象,势必会有大量的内存拷贝,这样岂不是会严重拉胯新能,还是说有新的姿势构造 DataFrame 。小白跪求大佬赐教。
|
lewinlanJan 8, 2021 via Android
1
我记得有一个参数,可以指定原地操作。
|
|
wuwukai007Jan 8, 2021 via Android
2
concat
|
|
bilibilifiJan 8, 2021 via iPhone
3
list 里搞好了再转?我记得 dataframe 为了优化性能会把数据放在连续的内存里
|
|
nthhdyJan 8, 2021
4
我不了解啊,瞎说的。但我感觉它不会拷贝内存的,有可能是写时复制的。可以读下源码看看。
|
|
crystomJan 8, 2021
5
懒操作吧
|
|
allAboutDbmssJan 8, 2021
6
|
|
milkpuffJan 9, 2021
7
pandas 直接操作非常慢,一般拼接都 append 到 list 里面,最后一次性 concat 。
pandas 索引、切片、拼接、赋值等都不适合频繁调用,转换成 numpy 效率可以极大提升 |
|
RoryskyJan 9, 2021
8
猛男都直接用原生数据类型
|
|
myCupOfTeaJan 9, 2021
11
数据量太大确实会有性能问题啊
底层是 numpy 吧,numpy concat 数据量大的阵列确实会很慢 |
|
lithiumiiJan 9, 2021 via Android
12
append 确实慢
如果是一堆小 df 建议 concat 一个 list 如果是一行一行的可以每行先存成一个 dict 然后 append 到 list 里,最后转成 df |
|
13
@bilibilifi 我现在的数据阵列是 rows 是一亿五千万左右,columns 是 12,有点太庞大了,用 list 的话能撑住么?
|
|
14
@allAboutDbmss 谢谢推荐,我去看看这个工具
|
|
15
@myCupOfTea 数据量确实很大,rows 差不多一亿五千万的样子。
|
|
16
@lithiumii 感谢指导,我这就去试试。
|
|
outoftimeerrorJan 9, 2021
17
用 spark dataframe
|
|
volvo007Jan 9, 2021
18
@shuangchengsun list 存的是对象指针,不是实际的对象……
对于这个体量的数据,可以考虑用 vaex 这个库 如果上下文操作不复杂且需要持久化的话,强烈安利 PostgreSQL 数据库来处理,超好用,真香 |
|
weeevvJan 9, 2021
19
Dask 或者直接上数据库吧。
|
|
dlsflhJan 9, 2021 via Android
20
试试看并行的 pandas modin ?
|
|
ElliotQiJan 9, 2021
21
|
|
22
@volvo007 感谢指导
|