【发布时间】:2018-05-04 22:40:54
【问题描述】:
我有一个这样的数据框(df):
euro token
200.0 65.78947368421053
9997.8 2631.0
只要只有 .0,我就想去掉 .0,但是当“欧元”中有一个小数点时,比如 0.8,我希望像通常使用货币一样使用小数点。 因此,“欧元”列的定义将是 2 位小数,除非只有 0。对于“令牌”列,它将是 18 位小数,不显示尾随 0,当只有 0 时没有小数。
我现在读了很多书,但什至不知道从哪里开始。有人吗?
更新了更多问题的示例
import pandas as pd
import numpy as np
min_invest = 200
cps_exchange_rate_eur = Decimal(38) / Decimal(10)
df = pd.read_excel(file.xlsx,
index_col=None,
dtype={'euro': float},
na_values='NA'
)
print(df.head())
print(df.dtypes)
email euro
0 first@gmail.com 600.00
1 second@web.de 200.00
2 third@web.de 1997.80
3 fourth@gmail.com 200.00
4 fifth@gmx.ch 9997.80
email object
euro float64
dtype: object
现在我正在尝试修复 2 个小数。 :-)
df.loc[:, 'euro'] = np.round(df['euro'], decimals=2)
df.loc[:, 'euro_cent'] = (df['euro'] * 100).astype(int)
print(df.head()
print(df.dtypes)
email euro euro_cent
0 first@gmail.com 600.00 60000
1 second@web.de 200.00 20000
2 third@web.de 1997.80 199779
3 fourth@gmail.com 200.00 20000
4 fifth@gmx.ch 9997.80 999779
email object
euro float64
euro_cent int64
dtype: object
如您所见,第 2 行和第 4 行搞砸了。我不知道如何解决这个问题。
谢谢曼努埃尔
【问题讨论】:
标签: python pandas formatting numbers decimal