python - 在函数内操作数据框时出错(“函数”对象没有属性)
问题描述
我想添加一个列,它是某个列中唯一值的索引。
原始数据框是:
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'**
不知道为什么不能在函数中操作数据框。顺便说一句,如果有更好的方法来生成这样的“组码”,谢谢你的启发!
解决方案
df1 = df.sort_values('Year')
df1['year code'] = df1.groupby('Year').ngroup()
df1 = df1.reset_index(drop=True)
# df.sort_values('Year').assign(Code=df.groupby('Year').ngroup()).reset_index(drop=True)
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
推荐阅读
- javascript - Promise.All 解决永远不会被 forEach 调用
- node.js - 无法通过代理服务器发送请求
- image - 为什么 PFM 具有相反的行顺序
- phpmyadmin - 如何在 PMA 搜索窗口中显示普通输入字段而不是下拉框
- reactjs - Next.js 身份验证:身份验证出现 404 错误
- laravel - 无法删除 Laravel 中的数据
- javascript - 画布无法加载
- c++ - 如何删除我的 C++ 代码中的分段错误?
- postgresql - Hibernate / Postgres - 更改默认列类型映射
- android - Kotlin中的高阶函数如何使用另一个参数作为函数类型参数的参数