如何在熊猫中删除不需要的`.0`s?

时间:2018-04-25 13:37:39

标签: python pandas decimal

如何将我的pandas DataFrame列的组件从float类型转换为 actual string?

最初,当我pd.set_option('display.float_format', lambda x: '%.0f' % x) 时,他们会以科学记数法显示:

e.g。 1.04983E + 13

我使用以下行来更改显示类型以显示没有小数的所有数字:

sample_df['gpid'][0:2]
0    10498310800133
1   767838527881217

这似乎最初起作用(没有显示小数!):

.0

但是,当我尝试列出一个列表时,它显然包含每个组件前面的小数list(sample_df['gpid'])[0:2] [10498310800133.0, 767838527881217.0]

.0

如何避免这种不受欢迎的{{1}}? [这对昨天整整一天都很烦人......]

2 个答案:

答案 0 :(得分:3)

您似乎将对象与其表示混淆。此DataFrame包含float个。您可以表示这些(如字符串),但是当您更改显示选项时,对象保持不变。转换为列表会将这些float个对象发送到一个python list,它拥有float s(与pandas无关)的代表,并始终显示.0

您无法更改python list的格式。它是内置的。您可以通过

将这些float转换为int
list(map(int, sample_df['gpid']))[0:2]
[10498310800133, 767838527881217]

但请注意,您正在创建新对象,而不是简单地更改其表示形式。这意味着任何非整数浮点数(即不在.0中结束)都将转换为整数。

要将pandas值转换为字符串,请执行

sample_df['gpid'] = sample_df['gpid'].apply(lambda f: format(f, '.0f'))

输出:

              gpid
0   10498310800133
1  767838527881217

答案 1 :(得分:0)

强制int使用:

list(sample_df['gpid'].astype('int64'))[0:2]

由于浮点数为float64,您的列显然是nan类型。