Как перебирать столбцы в фрейме данных?

#python #pandas

#python #панды

Вопрос:

У меня есть фрейм данных со многими столбцами метрик, каждый из которых содержит вывод с плавающей запятой. Мне нужно округлить их все до четырех цифр. Для этого я хочу перебрать все столбцы.

 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:

 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 = ...