Я хотел бы добавить столбцы, которые являются индексом для уникальных значений в определенном столбце.
Исходный кадр данных:
Team Rank Year Points
0 Riders 1 2014 876
1 Riders 2 2015 789
2 Devils 2 2014 863
3 Devils 3 2015 673
4 Kings 3 2014 741
5 kings 4 2015 812
6 Kings 1 2016 756
7 Kings 1 2017 788
8 Riders 2 2016 694
9 Royals 4 2014 701
10 Royals 1 2015 804
11 Riders 2 2017 690
И идеальный вариант:
Team Rank Year Points year code
0 Riders 1 2014 876 0
1 Devils 2 2014 863 0
2 Kings 3 2014 741 0
3 Royals 4 2014 701 0
4 Riders 2 2015 789 1
5 Devils 3 2015 673 1
6 kings 4 2015 812 1
7 Royals 1 2015 804 1
8 Kings 1 2016 756 2
9 Riders 2 2016 694 2
10 Kings 1 2017 788 3
11 Riders 2 2017 690 3
И я определил функцию, которая поможет мне с этим:
def gen_countrycode(df):
grouped = df.groupby('Country Name')
Countries=df['Country Name'].unique()
group_num=range(len(df.groupby(['Country Name']).groups))
newdf=pd.DataFrame()
for i in group_num:
country=Countries[i]
country_group=grouped.get_group(country)
country_group['country code']=i
newdf=pd.concat([newdf,country_group], ignore_index=True)
return newdf
Часть определения работает нормально, но когда я применяю ее к моему фрейму данных, происходит ошибка:
line 2, in gen_countrycode
grouped = df.groupby('Country Name')
AttributeError: **'function' object has no attribute 'groupby'**
Понятия не имею, почему не может манипулировать кадром данных внутри функции.Кстати, если есть лучший способ создать такой «групповой код», спасибо за вдохновение!