微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – pandas iterrows将int更改为浮点数

我正在尝试迭代包含一些int64和一些浮点数的DataFrame的行. iterrows()似乎将我的intts变成了浮点数,这打破了我想要下游的一切:

>>> 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]

直接在df.id上迭代很好.但是通过iterrows(),我得到了不同的价值观.有没有办法以这样的方式迭代行,我仍然可以按列名索引并获取所有正确的值?

解决方法:

Here是文档的相关部分:

Because iterrows returns a Series for each row, it does not preserve dtypes across the rows (dtypes are preserved across columns for DataFrames) […] To preserve dtypes while iterating over the rows, it is better to use itertuples() which returns namedtuples of the values and which is generally faster as iterrows.

您的数据示例:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐