我有一个包含许多公制列的数据框都包含浮动输出。我需要将它们全部四舍五入到四位数。我想循环遍历所有列来执行此操作。
import numpy as np
import pandas as pd
test_df = pd.DataFrame(np.random.randn(10,4), columns=['a','b','c','d'])
metrics = test_df.columns
metrics = metrics.tolist()
for x in metrics:
test_df.x = np.round(test_df.x, 4)
然而,这给了我错误:
AttributeError: 'DataFrame' object has no attribute 'x'
这是最好的方法吗?
答案 0 :(得分:3)
import functools
test_df.apply(functools.partial(np.round, decimals=4))
如果你想迭代列,那就很简单了:
for c in test_df.columns:
test_df[c] = np.round(test_df[c], 4)
你试图做的事情已经破坏了python中的属性访问权限。当您尝试test_df.x
时,x
与x
循环中的for
完全无关。这会有相同的结果:
for unused_value in metrics:
test_df.x = ...