Вызов и переименование не работают для столбца в Pandas Dataframe

Я объединил два файла .csv в два отдельных кадра данных pandas для предварительной обработки. Кадрами данных являются «properties_data» и «customers_data». Вызов и переименование не работают для первого импортированного столбца («id» и «customerid» соответственно) обоих фреймов данных. Что может быть не так? Заранее благодарю за помощь!

Вот код с выводом для кадра данных «properties_data» (запускается в среде Jupyter):

import pandas as pd
properties = pd.read_csv("properties.csv", usecols = range(1,10))
properties_data = properties.copy()
properties_data.index.name = 'propertiesIndex'
properties_data.rename(columns = {'id': 'propertyId', 'date_sale': 'dateSale', 'property#': 'propertyNo', 'customerid' : 'customerId'}, inplace=True)
properties_data.dtypes

Вывод показывает, что имя столбца «id» не изменилось на «propertyId»:

id             int64
building        int64
dateSale       object
type           object
propertyNo      int64
area          float64
price          object
status         object
customerId     object
dtype: object

Другие столбцы являются вызываемыми:

properties_data.loc[: ,'dateSale']
# or properties_data.dateSale

# Giving output:

propertiesIndex
0    11/1/2005
1    10/1/2005
2     7/1/2007
3    12/1/2007
4    11/1/2004
Name: dateSale, dtype: object

Но столбец «id» (или «propertyId» на всякий случай) не является:

properties_data.loc[: ,'id']
# or properties_data.id

# Giving a long error massage ending with:

KeyError: 'id'

То же самое относится и к фрейму данных «customers_data»:

customers = pd.read_csv("customers.csv", usecols = [i for i in range(1,13)])
customers_data = customers.copy()
customers_data.index.name = 'customersIndex'
customers_data.rename(columns = {'customerid' : 'customerId', 'birth_date': 'birthDate', 'deal_satisfaction': 'dealSatisfaction'}, inplace=True)
customers_data.dtypes

Там выходные данные показывают, что имя столбца «customerid» не изменилось на «customerId»:

customerid         object
entity              object
name                object
surname             object
birthDate           object
sex                 object
country             object
state               object
purpose             object
dealSatisfaction     int64
mortgage            object
source              object
dtype: object

Опять же, другие столбцы доступны для вызова:

customers_data.loc[: ,'entity']
# or customers_data.entity

# Giving output:

customersIndex
0    Individual
1    Individual
2    Individual
3    Individual
4       Company
Name: entity, dtype: object

Но столбец «customerid» (или «customerId» на всякий случай) не является:

customers_data.loc[: ,'customerid']
# or customers_data.customerid

#Again, a long error massage ending with:

KeyError: 'customerid'

Вот образец файла «properties.csv» для кадра данных «properties_data»:

,id,building,date_sale,type,property#,area,price,status,customerid
0,1030,1,11/1/2005,Apartment,30,743.09,"$246,172.68 ", Sold , C0028 
1,1029,1,10/1/2005,Apartment,29,756.21,"$246,331.90 ", Sold , C0027 
2,2002,2,7/1/2007,Apartment,2,587.28,"$209,280.91 ", Sold , C0112 
3,2031,2,12/1/2007,Apartment,31,1604.75,"$452,667.01 ", Sold , C0160 
4,1049,1,11/1/2004,Apartment,49,1375.45,"$467,083.31 ", Sold , C0014 

Вот образец файла «customers.csv» для кадра данных «customers_data»:

,customerid,entity,name,surname,birth_date,sex,country,state,purpose,deal_satisfaction,mortgage,source
0,C0110,Individual,Kareem,Liu,5/11/1968,F,USA,California,Home,4,Yes,Website
1,C0010,Individual,Trystan,Oconnor,11/26/1962,M,USA,California,Home,1,No,Website
2,C0132,Individual,Kale,Gay,4/7/1959,M,USA,California,Home,4,Yes,Agency
3,C0137,Individual,Russell,Gross,11/25/1959,M,USA,California,Home,5,No,Website
4,C0174,Company,Marleez,Co,,,USA ,California,Investment,5,No,Website

ок print(pd.read_csv("properties.csv", usecols = range(1,10)).columns)

Panda Kim 12.07.2024 15:19

или ставьте лайк print(pd.read_csv("properties.csv", usecols = range(1,10)).get('id', 'id columns doesnt exist')). KeyError: 'id' означает, что столбца с именем «id» нет.

Panda Kim 12.07.2024 15:21

@PandaKim, print(pd.read_csv("properties.csv", usecols = range(1,10)).columns) возвращает "Index(['id', 'building', 'date_sale', 'type', 'property#', 'area', 'price', 'status', 'customerid'], dtype=' object')», а print(pd.read_csv("properties.csv", usecols = range(1,10)).get('id', 'id columns doesnt exist')) возвращает «столбцы идентификаторов не существуют».

Karel Prinsloo 12.07.2024 16:08

Кажется, есть столбец, похожий на «id», но в конечном итоге результат говорит нам вот что: «столбцы с идентификаторами не существуют».

Panda Kim 12.07.2024 16:36

Да, это очень странно!

Karel Prinsloo 12.07.2024 16:41
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение состоит в том, что перед «id» и «customerid» соответственно был невидимый символ, который нужно было удалить в двух файлах CSV. Таким образом, два столбца или серии были созданы как «[невидимый символ]id» и «[невидимый символ]customerid», что сделало невозможным их вызов и переименование. Забавно, что когда я копирую фрагменты образцов csv, которыми поделился здесь, эти невидимые символы разрешаются, и код работает так, как ожидалось.

Другие вопросы по теме