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