【问题标题】:Pandas, round - function熊猫,圆形 - 功能
【发布时间】:2026-01-23 13:05:01
【问题描述】:

在 pandas 数据帧上运行 round 函数无效。

  1. 为什么会这样?
  2. 更通用的方法是什么?
import pandas as pd
df_round=pd.DataFrame({'index': {0: 0.0, 1: 2.563624, 2: 5.127248, 3: 0.0},
 'time': {0: 10.254496, 1: 20.508992, 2: 15.381744, 3: 10.254496},
 'ph_1': {0: 7.690872, 1: 12.81812, 2: 20.508992, 3: 7.690872},
 'ph_2': {0: 17.945368, 1: 7.690872, 2: 20.508992, 3: 17.945368},
 'text': {0: 'foo', 1: 'bar', 2: 'spa', 3: 'm'}})

print("Before\n")
print(df_round)

decimals = pd.Series([1, 0, 2], index=['time','ph_1','ph_2'])
df_round=df_round.round(decimals)

print("After\n")
print(df_round)

失败:控制台打印两次完全相同。

【问题讨论】:

  • 添加了变量。代码现已完成
  • 对我来说效果很好。
  • 你的熊猫版本是什么?
  • 是的,对我来说似乎也可以正常工作。
  • pd.__version__ '0.23.0'

标签: pandas


【解决方案1】:

对我来说,在上一个 pandas 版本 0.23.4 它工作得很好,替代解决方案是使用 dictionary

df_round=df_round.round({'time':1,'ph_1':0,'ph_2':2})
print(df_round)
      index  time  ph_1   ph_2 text
0  0.000000  10.3   8.0  17.95  foo
1  2.563624  20.5  13.0   7.69  bar
2  5.127248  15.4  21.0  20.51  spa
3  0.000000  10.3   8.0  17.95    m

【讨论】:

  • 在我的环境中看起来像一个问题。我正在使用 Spyder Py 3.6
  • @Impulsleistung - 我也使用它,在 python 3.6 下的 windows 下运行良好。
  • 我不相信:这是 Spyder 的问题!我在不同的上下文中重新输入了代码并且它起作用了。那个 IDE 不仅超级慢而且有问题
  • @Impulsleistung - 那么你开始使用pycharm了吗?