Pandas将所有浮点列转换为整数。

3

有几个浮点型列,我想将所有浮点型列转换为整数型。

在了解这些浮点型列的列名之前,如何在一行中将它们全部转换为整数类型?


2
你想要 df.round().astype('Int64') 吗?你也可以查看 df.select_dtypes() 来仅包含数字列,如果不确定的话,请花时间阅读这篇关于如何提供一个出色的 Pandas 示例的帖子:how to provide a great pandas example,以及如何提供一个 minimal, complete, and verifiable example 并相应地修改你的问题。 - anky
嗨,@anky_91,你能写一个关于select_dtypes的答案吗?谢谢。 - DennisLi
我没有测试数据集,但你可以尝试使用 m = df.select_dtypes(np.number)df[m.columns]= m.round().astype('Int64')。你可以在这里了解有关 Int64 的信息,它也可以处理 NaN 值。 - anky
只是测试,它正在工作。谢谢,你可以写下答案,我会接受的。 - DennisLi
2个回答

6

您可以首先使用select_dtypes选择类型,然后对其进行round舍入,最后使用支持Nullable Int dtype的df.astype转换为Int64

m = df.select_dtypes(np.number)
df[m.columns]= m.round().astype('Int64')

3
你可以使用简单的for循环来实现这个功能:
# say df is the dataframe
for c in df.columns:
    if df[c].dtype == np.float:
        df[c] = df[c].astype(int)

如果该列包含空值,它将会报错。我已经使用了Int64而不是int,并将其写入CSV文件,但是当我读取相同的CSV文件时,它显示为float类型。如何解决这个问题? - Yashraj Nigam
这应该是被接受的答案。回答了问题。 - Amir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接