在pandas数据框中将浮点数转换为字符串

11

我有一个Pandas数据框,其中包含日期时间和浮点数数据。

time                         price1              price2
2018-02-01T00:00:00.000Z     1.4526547885        1.654775563

我需要将列转换为字符串格式,以便price1和price2列显示四位小数,时间显示为:01,02,2018 00:00:00。
感谢任何关于此的线索。谢谢。
2个回答

13
你可以使用dt.strftime来格式化datetime,然后再自定义格式化float
df['time'] = df['time'].dt.strftime('%Y,%m,%d %H:%M:%S')

cols = ['price1','price2']
df[cols] = df[cols].applymap(lambda x: '{0:.4f}'.format(x))
print (df)
                  time  price1  price2
0  2018,02,01 00:00:00  1.4527  1.6548

有没有办法使price1和price2列的最后两位数字加粗并增大字号? - user8415577
我认为不行,这是不可能的。 - jezrael
可能的解决方案是创建HTML并对其进行修改。 - jezrael
请问您能否提供一个示例,如果可能的话,来展示如何完成这个任务? - user8415577
1
对于单列,您可以使用以下代码:df['col_name'] = df['col_name'].apply(lambda x: '{0:.2f}'.format(x)) - Wojciech Jakubas
显示剩余3条评论

7
你可以使用round方法来显示仅保留4位小数,并使用.apply(str)将其转换为字符串对象。

示例

df["price1"] = df["price1"].round(4).apply(str)
df["price2"] = df["price2"].round(4).apply(str)

我需要将这些也转换为字符串类型。日期时间同理。 - user8415577
2
如果小数位数比四舍五入后的数字短,那么这种方法将无法按预期工作,例如对于值1.45,您将得到格式化字符串1.45,而期望的值是四舍五入为4位小数的1.4500。 - Wojciech Jakubas

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