在pandas数据帧中将float转换为字符串

时间:2018-02-01 08:15:38

标签: python python-3.x pandas

我在pandas中有一个包含datetime和float数据的数据框。

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

我需要将列转换为字符串格式,以便price1和price2列显示最多4位小数,时间显示为:01,02,2018 00:00:00

对此的任何线索表示赞赏。谢谢

3 个答案:

答案 0 :(得分:1)

您可以使用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

答案 1 :(得分:0)

您可以使用 round 方法仅显示4位小数。并使用。 apply (str)将其转换为字符串对象

<强> EX

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

答案 2 :(得分:0)

这应该有效:

df["price1"] = df["price1"].round(4).astype(str)
df["price2"] = df["price2"].round(4).astype(str)
df['time'] = df['time'].dt.strftime('%d,%m,%Y %H:%M:%S')