从十进制格式数字中删除“ .00”,使它们成为整数,而其他十进制数字保持不变

时间:2019-04-10 10:15:12

标签: python-3.x

我有一列的金额四舍五入到小数点后两位。因此,有两种类型的肠,一种形式为359.00,另一种形式为359.78。我想从第一种输入形式中删除.00,以使其成为整数(359),同时保持其他数字的十进制格式不变。

1 个答案:

答案 0 :(得分:0)

数据是浮点数

一列没有混合类型。假设您的数据存储为浮点数(dtype: float64),则它们将保持浮点数。您可以做的是使用自定义格式,以便按需要在屏幕上显示它们,但在内部它们仍为浮动格式。例如:

dfa = pd.DataFrame.from_records([(1,), (3.34,), (2.49,), (5,), (7,)], columns=['Amount'])
pd.options.display.float_format = lambda x : "{:2.2f}".format(x).rstrip('0').rstrip('.')
print(dfa)

此打印:

   Amount  
0       1  
1    3.34  
2    2.49  
3       5  
4       7

数据是字符串

如果相反,您的数据只是表示数字(dtype: object的字符串,则可以使用pandas.applymap根据格式样式实际编辑字符串。

dfb = pd.DataFrame.from_records([("1.00",), ("3.34",), ("2.49",), ("5.00",), ("7.00",)], columns=['Amount'])
dfbb = dfb.applymap(lambda x : str(x).rstrip('0').rstrip('.'))
print(dfbb)

(再次打印):

  Amount
0      1
1   3.34
2   2.49
3      5
4      7

数据是浮点数,但您需要字符串

在这种情况下,您可以结合使用两种方法:

dfc = dfa.applymap(lambda x : "{:2.2f}".format(x).rstrip('0').rstrip('.'))
print(dfc)

从带有浮点数的数据帧开始,以格式化字符串的数据帧结束。它打印的内容相同,无需触摸熊猫格式设置。

基本概念的积分为this answer