python - Pandas:复制结构并设置所有元素

标签 python pandas

有一个 pandas 对象,比如“pdObj1”,具有一定的结构(即列名、行索引等),我想创建一个具有相同结构但内容不同的“pdObj2”。

最快的(代码行或执行速度)方法是什么?目前我正在使用:

pdObj2 = pdObj1.copy()
pdObj2[:] = 0

由于我经常这样做,所以我想检查这是否是最佳的。

<小时/>

Caroline Alexiou 提出建议的时机

>>> import timeit
>>> setup = """\
... import pandas as pd
... a = pd.Series(range(int(1e6)))
... """
... 
>>> s1 = """\
... b = a.copy()
... b[:] = 0"""
... 
>>> s2 = """b = pd.Series(index=a.index).fillna(0)"""
>>> timeit.timeit(stmt=s1, setup=setup, number=100)
3.292705357803854
>>> timeit.timeit(stmt=s2, setup=setup, number=100)
140.00138844462077
<小时/>

帝斯曼提出建议的时间

设置问题:

In [1]: import pandas as pd

In [2]: a = pd.Series(range(int(1e6)))

复制结构并将所有元素设置为新值:

In [3]: %timeit b=a.copy(); b[:]=0
10 loops, best of 3: 33.3 ms per loop

In [4]: %timeit b=pd.Series(0, index=a.index)
100 loops, best of 3: 34 ms per loop

In [5]: %timeit b=pd.Series(index=a.index).fillna(0)
1 loops, best of 3: 1.34 s per loop

复制结构并将单个元素设置为新值:

In [6]: %timeit b=a.copy(); b[:]=0; b[500000] = 1
10 loops, best of 3: 40.2 ms per loop

In [7]: %timeit b=pd.Series(0, index=a.index); b[500000]=1
100 loops, best of 3: 34.7 ms per loop

执行时间:

In [8]: import sys

In [9]: print (sys.version)
2.7.6 |Anaconda 1.9.1 (32-bit)| (default, Nov 11 2013, 10:50:31) [MSC v.1500 32 bit (Intel)]

最佳答案

您可以传递 0 作为数据参数,即 pd.Series(0, index=a.index):

>>> a = pd.Series(range(int(1e6)))
>>> %timeit b=pd.Series(index=a.index).fillna(0)
1 loops, best of 3: 409 ms per loop
>>> %timeit b=a.copy(); b[:] = 0
100 loops, best of 3: 14.2 ms per loop
>>> %timeit b=pd.Series(0, index=a.index)
100 loops, best of 3: 8.8 ms per loop

关于python - Pandas:复制结构并设置所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23078344/

相关文章:

python - 组内线性插值

python - 最大化seaborn调色板中的色彩空间

python - 如何在pyspark中将spark数据框保存为没有行的文本文件?

python - 数据框和 read_csv 函数 - Python

python - 使用 python multiprocessing 运行带有不同参数组合的循环脚本

python - 如何从 pandas DataMatrix 获取元数据

python - Pandas 合并数据框模块

python - 如何通过正则表达式过滤 Pandas 中的行

python - 在Python中,尝试将整数转换为字符并放入二进制 "string"

python - 在 python 中定义颜色