我有一个数据框,我需要以一种非常特殊的方式显示(而不是修改)浮点值。
df = pd.DataFrame([1000.5, 100000.78, -90000, -900.4],
index=['row1','row2','row3','row4'],
columns=['amount'])
print(df)
amount
row1 1000.50
row2 100000.78
row3 -90000.00
row4 -900.40
整个字符串应该是 9 个字符长(包括减号和小数点分隔符) , int 部分应该有前导零,
小数部分也应该有补零并限制为2位小数
我想将其强制打印(不修改原始值):
amount
row1 001000.50
row2 100000.78
row3 -90000.00
row4 -00900.40
这是我在没有多少运气的情况下尝试的:
df['amount'].apply(lambda x: f'{x:.2f}')
df['newamount'] = df['amount'].astype(str)
width = 9
df['newamount']= df['newamount'].str.zfill(width)
print(df)
amount newamount
row1 1000.50 0001000.5
row2 100000.78 100000.78
row3 -90000.00 0-90000.0
row4 -900.40 000-900.4
请记住,数据框中还有其他浮动列不应以这种方式显示
答案 0 :(得分:0)
您可以将显示 float_format
选项设置为 '{:09.2f}'.format
:
pd.options.display.float_format = '{:09.2f}'.format
df
amount
row1 001000.50
row2 100000.78
row3 -90000.00
row4 -00900.40
但这只会改变当前的显示。如果需要创建新列,可以使用 f
字符串:
df['newamount'] = df.amount.apply(lambda x: f'{x:09.2f}')
df
amount newamount
row1 1000.50 001000.50
row2 100000.78 100000.78
row3 -90000.00 -90000.00
row4 -900.40 -00900.40