【问题标题】:removing 0 after decimal 4th digit删除小数点后第 4 位的 0
【发布时间】:2022-01-23 01:45:13
【问题描述】:

我有一个带有坐标的 excel 文件。如果小数点后第四位为0,我只想取前3位。

Original data    Output required
12.6820701       12.682
-0.58903705      -0.589
56.345698        56.345698
8.95604          8.956
21.99911         21.99911

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 请不要发布图片。从图像中重新创建可重现的东西是乏味的。

标签: python pandas numpy


【解决方案1】:

试试这个:

df['Output required'] = df['Original data'].astype(str).apply(lambda v: round(float(v), 3) if ('.' in v and len(v) >= v.find('.')+4 and v[v.find('.')+4] == '0') else float(v))

输出:

>>> df
Original data    Output required
12.6820701       12.682
-0.58903705      -0.589
56.345698        56.345698
8.95604          8.956
21.99911         21.99911

【讨论】:

  • getting error.df['output'] = df['Latitude'].astype(str).apply(lambda v: round(float(v), 3) if ('.' in v and len(v) >= v.find('.')+4 and v[v.find('.')+4] == '0') else float(v)) IndexError: string index out of范围
  • 我试过了,但仍然没有显示正确的结果。我想要 34.70406448 到 34.704,但您的代码正在执行 34.704000
  • 这实际上不是我的代码的错 - Pandas 会自动在十进制数字的末尾显示额外的零,以便所有数字看起来都具有相同的长度。 34.704000 中有 3 个额外的零,因为您有一些其他数字有 6 个小数位,而不是 0。
  • 那么请您指导一下现在该做什么。
猜你喜欢
  • 1970-01-01
  • 2022-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多