gpt4 book ai didi

python - pandas 高效数据框集行

转载 作者:IT老高 更新时间:2023-10-28 20:47:19 26 4
gpt4 key购买 nike

首先我预分配了以下空 DataFrame:

df=DataFrame(columns=range(10000),index=range(1000))

然后我想用长度为 10000 的 numpy 数组作为数据逐行(有效地)更新 df。我的问题是:我什至不知道应该使用哪种 DataFrame 方法来完成这项任务。

谢谢!

最佳答案

这里有 3 种方法,只有 100 列,1000 行

In [5]: row = np.random.randn(100)

逐行赋值

In [6]: def method1():
...: df = DataFrame(columns=range(100),index=range(1000))
...: for i in xrange(len(df)):
...: df.iloc[i] = row
...: return df
...:

在列表中构建数组,一次创建所有框架

In [9]: def method2():
...: return DataFrame([ row for i in range(1000) ])
...:

按列赋值(两端有转置)

In [13]: def method3():
....: df = DataFrame(columns=range(100),index=range(1000)).T
....: for i in xrange(1000):
....: df[i] = row
....: return df.T
....:

这些都有相同的输出帧

In [22]: (method2() == method1()).all().all()
Out[22]: True

In [23]: (method2() == method3()).all().all()
Out[23]: True


In [8]: %timeit method1()
1 loops, best of 3: 1.76 s per loop

In [10]: %timeit method2()
1000 loops, best of 3: 7.79 ms per loop

In [14]: %timeit method3()
1 loops, best of 3: 1.33 s per loop

很明显,建立一个列表,然后一次创建所有框架比进行任何形式的分配要快几个数量级。作业涉及复制。一次构建所有内容只复制一次。

关于python - pandas 高效数据框集行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18771963/

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