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

6 python python-3.x pandas

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

time                         price1              price2
2018-02-01T00:00:00.000Z     1.4526547885        1.654775563
Run Code Online (Sandbox Code Playgroud)

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

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

jez*_*ael 9

您可以dt.strftime用于格式化datetimes 然后自定义floats格式:

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
Run Code Online (Sandbox Code Playgroud)


Rak*_*esh 6

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

例如

df["price1"] = df["price1"].round(4).apply(str)
df["price2"] = df["price2"].round(4).apply(str)
Run Code Online (Sandbox Code Playgroud)

  • 如果小数比四舍五入的数字短,则这将无法按预期工作,即对于值 1.45,您将得到格式化字符串 1.45,其中当四舍五入为 4 时,预期值为 1.4500 (2认同)