熊猫将变化整数转换为浮点数

Bar*_*rry 5 python python-2.7 pandas

我正在尝试遍历包含一些int64和一些浮点数的DataFrame的行。iterrows()似乎把我的想法变成了浮点数,这打破了我想在下游做的一切:

>>> import pandas as pd
>>> df = pd.DataFrame([[10000000000000001, 1.5], [10000000000000002, 2.5]], columns=['id', 'prc'])
>>> [id for id in df.id]
[10000000000000001, 10000000000000002]
>>> [r['id'] for (idx,r) in df.iterrows()]
[10000000000000000.0, 10000000000000002.0]
Run Code Online (Sandbox Code Playgroud)

直接迭代就可以了df.id。但是通过iterrows(),我得到了不同的值。有没有一种方法可以遍历行,使得我仍然可以按列名索引获得所有正确的值?

tim*_*geb 7

是文档的相关部分:

因为 iterrows 为每一行返回一个系列,它不保留跨行的 dtypes(跨列保留 DataFrames 的 dtypes)[...] 要在遍历行时保留dtypes,最好使用 itertuples() 返回值的命名元组,通常比 iterrows 更快。

您的数据示例:

>>> df = pd.DataFrame([[10000000000000001, 1.5], [10000000000000002, 2.5]], columns=['id', 'prc'])
>>> [t[1] for t in df.itertuples()]
>>> [10000000000000001, 10000000000000002]
Run Code Online (Sandbox Code Playgroud)