具有标量结果的 Pandas 总和列为零
Posted
技术标签:
【中文标题】具有标量结果的 Pandas 总和列为零【英文标题】:Pandas sum column with scalar results in zeros 【发布时间】:2016-01-28 09:48:20 【问题描述】:我将 pandas
数据帧的一列与一个标量相加,结果是一列全为零。奇怪的是,有时它会返回零,有时则不会。如果有人告诉我这个我不会相信,这就是为什么我制作了一个视频来展示这个结果:
https://dl.dropboxusercontent.com/u/15853805/pandas%20bug.mp4
谁能解释一下这个黑魔法?我对pandas
失去了信任,我真的需要它来工作。
使用这段代码我可以得到类似的错误:
import pandas as pd
import numpy as np
from pdb import set_trace as pdb
for _ in xrange(100):
data = np.random.randint(1,100000,1000000)
df = pd.DataFrame(data,columns=['column'])
scalar = np.random.randint(1,100000)
df.column += scalar
if df.column.max()==0:
pdb()
我的数据变量被零填满。是内存问题吗?如果我的数据较小,则不会发生这种情况,但我需要以安全的方式处理大数据!
>> print pandas.__version__
0.17.1
>> print numpy.__version__
1.10.1
Python 2.7.11 |Anaconda 2.4.1 (64-bit)
【问题讨论】:
请发布代码以重现您的问题。 这种情况发生在我无法传输的庞大数据集上。我将尝试使其与一些合成数据集一起使用。但正如您所见,代码很简单 df['column']+scalar @FabioLamanna 我无法重现您的错误,对我来说它工作正常,并且我获得了一个非零值的数据框。你可以发布你的 python、numpy、pandas 版本吗? 人们能解释一下为什么他们不赞成这个吗?这是一个严重的问题..! 我无法重现这个。我猜这是你的电脑/安装上的东西。 【参考方案1】:问题在于我的numexpr=2.4.4
版本更新到numexpr=2.4.6
解决了这个问题。 Github问题:https://github.com/pydata/pandas/issues/12167
【讨论】:
以上是关于具有标量结果的 Pandas 总和列为零的主要内容,如果未能解决你的问题,请参考以下文章
pandas 比较引发 TypeError:无法将 dtyped [float64] 数组与 [bool] 类型的标量进行比较