显然,我不明白用户定义函数中的return语句是如何工作的。当我从函数中删除这些语句时,代码就会工作。我认为问题在于返回语句
import pandas as pd
data = {"index_id": range(101, 131),
'company': ['Opera', 'Opera', 'Opera', 'Opera', 'Opera', 'Opera',
'Firefox', 'Firefox', 'Firefox', 'Firefox', 'Firefox', 'Firefox',
'Safari', 'Safari', 'Safari', 'Safari', 'Safari', 'Safari',
'Brave', 'Brave', 'Brave', 'Brave', 'Brave', 'Brave',
'Chrome', 'Chrome', 'Chrome', 'Chrome', 'Chrome', 'Chrome'],
"rating": [4, 5, 3, 3, 3, 3,
4, 5, 5, 1, 5, 5,
1, 4, 1, 2, 1, 2,
1, 5, 1, 5, 1, 5,
5, 5, 5, 4, 5, 4]
}
df = pd.DataFrame(data)
def AggRankBinRenameJoin (df_unaggdf):
#aggregating the unaggregated df
df_agg = df_unaggdf.groupby(['company']).agg({'rating':['std', 'mean']})
df_agg.columns = ['rating_std', 'rating_mean']
print(df_agg)
df_rank = df_agg.rank(ascending = 0, method = 'dense').add_prefix('rank_')
print(df_rank)
bin_labels = ['Diamond', 'Platinum', 'Gold', 'Silver', 'Bronze']
#bin_labels_reverse = ['Bronze', 'Silver', 'Gold', 'Platinum', 'Diamond']
df_bin= df_rank.apply(lambda x:pd.qcut(x, q=[0, .2, .4, .6, .8, 1], labels=bin_labels))
print(df_bin)
output = df_agg.join(df_rank).join(df_bin.add_prefix('bin_'))
print(output)
df_unaggdf = output.copy(deep = True)
return df_unaggdf
AggRankBinRenameJoin(df)
您需要指定要返回的数据帧和/或变量
例如:
如果要使用函数转换原始df,请指定
df=AggRankBinRenameJoin(df)
注意,我没有检查这篇文章是否有任何其他潜在的错误。如果存在任何问题,请编辑问题以显示错误消息
我明白了。需要将函数agrankbinRenameJoin(返回数据帧)设置为等于一个变量,以便该变量等于返回的数据帧
相关问题 更多 >
编程相关推荐