虽然能够在控制台中打印小数位数,但在尝试使用格式正确的数字写入 csv 时,我面临的挑战要大得多。在下面的代码中,我以某种方式设法将整数除以“000”,并将结果放入 csv 中,但我无法摆脱额外的“.,”。 for 循环确实是一个艰巨的挑战。也许,有人可以告诉我如何破解这个谜题。
查看下面的代码字符串。应该看起来像,无论是在控制台中打印还是在我正在写入的 csv 文件中:
23,400,344.567, 54,363,744.678, 56,789,117.456, 4,132,454.987
输入:
import pandas as pd
def insert_comma(s):
str=''
count=0
for n in reversed(s):
str += n
count+=1
if count == 3:
str += ','
count=0
return ''.join([i for i in reversed(str)][1:])
d = {'Quarters' : ['Quarter1','Quarter2','Quarter3','Quarter4'],
'Revenue':[23400344.567, 54363744.678, 56789117.456, 4132454.987]}
df=pd.DataFrame(d)
df['Revenue']=df.apply(lambda x: insert_comma(str(x['Revenue'] / 1000)), axis=1)
# pd.options.display.float_format = '{:.0f}'.format
df.to_csv("C:\\Users\\jcst\\Desktop\\Private\\Python data\\new8.csv", sep=";")
# round to two decimal places in python pandas
# .options.display.float_format = '{:.0f}'.format
print(df)
输出
Quarters Revenue
0 Quarter1 234,00.,344
1 Quarter2 543,63.,744
2 Quarter3 567,89.,117
3 Quarter4 1,32.,454
请您参考如下方法:
你可以使用它。使用格式字符串为 Revenue 列中的所有行使用逗号和 3 个小数位。
df['Revenue']=df['Revenue'].apply('{0:,.3f}'.format)
结果:
Quarters Revenue
0 Quarter1 23,400,344.567
1 Quarter2 54,363,744.678
2 Quarter3 56,789,117.456
3 Quarter4 4,132,454.987
