Плавающий столбец DataFrame в pandas преобразуется в объект после переименования значений в другом столбце - PullRequest
0 голосов
/ 29 мая 2018

У меня есть фрейм данных, на котором я проводил некоторую очистку, и по какой-то причине столбец, которого я вообще не трогал, переключился с типа float на объект.Столбец не имеет значений Nan, только числа и не был перепутан.

data = pd.read_csv(path, encoding="ISO-8859-1", names=['c_id', 'c_name', 'org_name', 'product', 'amount', 'date', 'product_type', 'payment_type'])

mask = data['c_name'] == data['org_name']
data['c_type'] = np.where(mask, 'Org', 'Ind')
data.loc[data['product_type'] == 'product'] = 'Product'

Если я распечатываю типы столбцов перед последней строкой, столбец amount является плавающей точкой, но еслиЯ делаю то же самое после последней строки, затем тип столбца суммы меняется на объект.

Последняя строка предназначена для исправления проблемы с меткой, так почему это повлияет на тип других столбцов?

Я знаю, что могу изменить тип столбца вручную, но я просто пытаюсьпонять, почему это происходит.

1 Ответ

0 голосов
/ 29 мая 2018

Вы заменяете всю строку на строку product, используя оператор loc, так что фактически, amount действительно изменяется.Вместо этого просто измените значение в столбце 'product_type':

data.loc[data['product_type'] == 'product', 'product_type'] = 'Product'

И ваш столбец amount не изменится.

Другой способ сделать это - использовать replace:

data.replace({'product_type':{'product':'Product'}}, inplace=True)
# or:
data['product_type'] = data['product_type'].replace('product', 'Product')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...