如何将我的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}}? [这对昨天整整一天都很烦人......]
答案 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
类型。