如何遍历数据框中的列?

时间:2014-06-25 19:59:40

标签: python pandas

我有一个包含许多公制列的数据框都包含浮动输出。我需要将它们全部四舍五入到四位数。我想循环遍历所有列来执行此操作。

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'

这是最好的方法吗?

1 个答案:

答案 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时,xx循环中的for完全无关。这会有相同的结果:

for unused_value in metrics:
    test_df.x = ...