#python #pandas #series
#python #pandas #Серии
Вопрос:
Я практикую свои навыки Python и хочу создавать серии. Я хочу использовать dictionary, но когда я хочу иметь индекс для серии, он показывает мне NaN. Я не знаю, в чем причина. Начальный словарь содержит строковые значения для ключей и значений, содержит только 8 элементов.
country_capital_dict = {'Germany':'Berlin', 'US':'Washington',
'Italy':'Rome', 'France':'Paris',
'Russia':'Moscow','Spain':'Madrid',
'Austria':'Vienna','Greece':'Athens'}
country_capital_series = pd.Series(country_capital_dict, index = ['a','b','c','d','e','f','g','h'])
print(country_capital_series)
Ответ №1:
Если передать словарь в Series
ключи from, по умолчанию создается индекс:
country_capital_dict = {'Germany':'Berlin', 'US':'Washington',
'Italy':'Rome', 'France':'Paris',
'Russia':'Moscow','Spain':'Madrid',
'Austria':'Vienna','Greece':'Athens'}
country_capital_series = pd.Series(country_capital_dict)
print(country_capital_series)
Germany Berlin
US Washington
Italy Rome
France Paris
Russia Moscow
Spain Madrid
Austria Vienna
Greece Athens
dtype: object
Если нужно изменить индекс, вы можете назначить его:
country_capital_series.index = ['a','b','c','d','e','f','g','h']
print(country_capital_series)
a Berlin
b Washington
c Rome
d Paris
e Moscow
f Madrid
g Vienna
h Athens
dtype: object
Или передайте только значения словаря в Series
:
country_capital_series = pd.Series(country_capital_dict.values(),
index = ['a','b','c','d','e','f','g','h'])
print(country_capital_series)
a Berlin
b Washington
c Rome
d Paris
e Moscow
f Madrid
g Vienna
h Athens
dtype: object
Причиной получения всех пропущенных значений является несоответствие между индексом из списка и индексом из ключей словаря — потому что разные панды пытаются изменить исходный индекс на новый из списка и не знают новых значений, поэтому назначили все NAN:
country_capital_series = pd.Series(country_capital_dict,
index = ['a','b','c','d','e','f','g','h'])
print(country_capital_series)
a NaN
b NaN
c NaN
d NaN
e NaN
f NaN
g NaN
h NaN
dtype: object
Если только некоторым совпадающим значениям присваиваются NAN только для не совпадающих значений:
country_capital_series = pd.Series(country_capital_dict,
index = ['a','Germany','c','d','e','Austria','g','h'])
print(country_capital_series)
a NaN
Germany Berlin
c NaN
d NaN
e NaN
Austria Vienna
g NaN
h NaN
dtype: object
Ответ №2:
Спасибо, это сработало.
Кроме того, я создал фрейм данных и изменил индекс, следуя вашему предложению. И это тоже было нормально. cars_details = {‘Honda’:[‘Civic’,’Accord’,’Acura’,’Pilot’,’Odyssey’,’Fit’, ‘Ringline’, ‘Гражданский хэтчбек’,’HR-V’], ‘Год’:[‘2005′,’2012′,’2018′,’2020′,’2013′,’2019′,’2020′,’2019’, ‘2014’] , ‘ Пробег’: [98600,55000,16000,126000,150000,17000,500,10000,110000], ‘Цена’: [6500,12300,15500,18000,77000,16600,34000,19000,12000], ‘Категория’: [‘седан’, ‘седан’,’седан’, ‘внедорожник’, ‘минивэн’, ‘хэтчбек’, ‘грузовик’, ‘хэтчбек’, ‘внедорожник’]
}
df_cars_details = pd.DataFrame(cars_details)
индекс от 0 до 9 равен
df_cars_details.index = [‘1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9’] print(‘df_cars_details с новыми индексами’) print(df_cars_details)
индекс от 1 до 9
У меня нет какой-либо конкретной цели изменить индекс, просто положил руки на Pandas для практики. Но я ценю ваш совет. Это полезно.