gpt4 book ai didi

python - pandas iterrows 中长整数的奇怪行为

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

    d = {'2014-07-10 08:26:29.091199': {'Col':'12976482066142964'}, '2014-07-10 08:26:29.171198': {'Col': '129764923110142964'}, '2014-07-10 08:30:46.906344': {'Col': np.nan}}

然后将其放入 DataFrame

x=pd.DataFrame.from_dict(d,orient='index')

现在,如果我迭代它,它就会完美地工作:

In [384]: for idx, row in x.iterrows():
print row['Col']
.....:
12976482066142964
129764923110142964
nan

现在让我们将其另存为 csv:

 x.to_csv('x')

加载它:

xs = pd.read_csv('x')

现在我想检查两者的第一个值:

In [389]: xs['Col'].ix[0]
Out[389]: 12976482066142964.0

In [390]: x['Col'].ix[0]
Out[390]: '12976482066142964'

看起来保存导致该列切换为 float 。这不是我想要的,但也不是我想要的。我可以解决这个问题。不幸的是,如果我现在尝试迭代从 csv 加载的 df:

In [391]: for idx, row in xs.iterrows():
print row['Col']
.....:
1.29764820661e+16
1.2976492311e+17
nan

看起来像是一个错误?

版本:

In [116]: pd.__version__
Out[116]: '0.14.0'

最佳答案

你的数字不能完全用float64表示,而且你有一个nan,所以你只能使用object数据类型。您必须指定这一点(它是一个伪错误,pandas可以找出它,但需要有人调试它,但我认为它们可能是一个不合理的性能命中,所以在列表中排名不高)

In [16]: pd.read_csv('test.csv',index_col=0,dtype={'Col' : object})
Out[16]:
Col
2014-07-10 08:26:29.091199 12976482066142964
2014-07-10 08:26:29.171198 129764923110142964
2014-07-10 08:30:46.906344 NaN

In [17]: pd.read_csv('test.csv',index_col=0,dtype={'Col' : object}).dtypes
Out[17]:
Col object
dtype: object

参见here对于这个问题

关于python - pandas iterrows 中长整数的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24678639/

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