在大pandas中将浮点数转换为整数?

我正在处理从CSV导入的数据。 pandas改变了一些列浮动,所以现在这些列中的数字显示为浮点! 但是,我需要将它们显示为整数,或者无逗号。 有没有办法将它们转换为整数或不显示逗号?

要修改浮点输出,请执行以下操作:

 df= pd.DataFrame(range(5), columns=['a']) df.a = df.a.astype(float) df Out[33]: a 0 0.0000000 1 1.0000000 2 2.0000000 3 3.0000000 4 4.0000000 pd.options.display.float_format = '{:,.0f}'.format df Out[35]: a 0 0 1 1 2 2 3 3 4 4 

使用.astype()函数来操纵列dtypes。

 >>> df = pd.DataFrame(np.random.rand(3,4), columns=list("ABCD")) >>> df ABCD 0 0.542447 0.949988 0.669239 0.879887 1 0.068542 0.757775 0.891903 0.384542 2 0.021274 0.587504 0.180426 0.574300 >>> df[list("ABCD")] = df[list("ABCD")].astype(int) >>> df ABCD 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 

编辑:

处理缺失值:

 >>> df ABCD 0 0.475103 0.355453 0.66 0.869336 1 0.260395 0.200287 NaN 0.617024 2 0.517692 0.735613 0.18 0.657106 >>> df[list("ABCD")] = df[list("ABCD")].fillna(0.0).astype(int) >>> df ABCD 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 >>> 

使用列名称列表,使用.applymap()更改多个列的types,或使用.apply()更改单个列的types。

  df = pd.DataFrame(10*np.random.rand(3, 4), columns=list("ABCD")) ABCD 0 8.362940 0.354027 1.916283 6.226750 1 1.988232 9.003545 9.277504 8.522808 2 1.141432 4.935593 2.700118 7.739108 cols = ['A', 'B'] df[cols] = df[cols].applymap(np.int64) ABCD 0 8 0 1.916283 6.226750 1 1 9 9.277504 8.522808 2 1 4 2.700118 7.739108 df['C'] = df['C'].apply(np.int64) ABCD 0 8 0 1 6.226750 1 1 9 9 8.522808 2 1 4 2 7.739108 
 import pandas as pd; right = pd.DataFrame({'C': [1.002, 2.003], 'D': [1.009, 4.55], "key":['K0', 'K1']}) CD key 0 1.002 1.009 K0 1 2.003 4.550 K1 right['C'] = right.C.astype(int) CD key 0 1 1.009 K0 1 2 4.550 K1 

这是一个快速的解决scheme,如果你想将你的Pandas DataFrame df中的更多列从float转换为整数,同时考虑到你可以有NaN值的情况。

 cols = ['col_1', 'col_2', 'col_3', 'col_4'] for col in cols: df[col] = df[col].apply(lambda x: int(x) if x == x else "") 

我试着用:

  else x) else None) 

但结果仍然有浮点数,所以我用else ""