#python #pandas #dataframe
Вопрос:
У меня есть такой набор данных
Title Location Cuisine
restaurant_id
0 ['Dove Bistrot Lenovo Corso Giacomo Matteotti 8/10 Primo Piano Spazi... Italian, Seafood, Mediterranean, Healthy, Hawa...
1 ['Mabuhay Restaurant Bastioni di Porta Volta 9, 20121 Milan Italy Filipino, Healthy
2 ['Star Zagros Kebabbar Corso 22 Marzo, 38, 20135 Milan Italy Middle Eastern, Turkish, Pub, Bar, Internation...
3 ['Shabby Grill Restaurant Via Domokos 4, 20147 Milan Italy Italian, Steakhouse, Barbecue
4 ['Il Panino del Laghetto Via Laghetto 7, 20122 Milan Italy Italian, Street Food, Fast Food
Если я наберу df.info() Я понимаю это:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 273 entries, 0 to 272
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
1 Title 273 non-null object
2 Location 273 non-null object
3 Cuisine 273 non-null object
Я хотел бы создать столбец «Категория», в котором просто сохранен первый столбец «Мир кухни», например, для 5 перечисленных строк: Итальянский, Филиппинский, Ближневосточный, Итальянский, Итальянский
Если я сделаю что-то подобное:
df['Category'] = df['Cuisine'].partition(',')
Там было бы написано:
AttributeError: 'Series' object has no attribute 'partition'
Как мне это исправить?
Ответ №1:
partition
к методу можно получить доступ, Series.str
но вы пытаетесь использовать его непосредственно в серии pandas df['Cuisine'].partition(',')
, и именно по этой причине вы получаете ошибку.
Кроме того, вам нужно взять первый пункт после вызова Series.str.partition
, вот что [0]
делается в приведенном ниже коде:
df['Category'] = df['Cuisine'].str.partition(',')[0]
Title Location Cuisine Category
restaurant_id
0 ['Dove Bist... Corso Giaco... Italian, Se... Italian
1 ['Mabuhay R... Bastioni di... Filipino, H... Filipino
2 ['Star Zagr... Corso 22 Ma... Middle East... Middle Eastern
3 ['Shabby Gr... Via Domokos... Italian, St... Italian
4 ['Il Panino... Via Laghett... Italian, St... Italian
Но лучшим вариантом было бы просто использовать Series.str.split
параметр maxsplit n=1
:
df['Category']=df['Cuisine'].str.split(',', n=1).str[0]