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