我面临 TypeError: sort_values() 缺少 1 个必需的位置参数:'by'
for i in range(0,len(data_sims.index)):
for j in range(1,len(data_sims.columns)):
user = data_sims.index[i]
serial = data_sims.columns[j]
if dataUser.ix[i][j] == 1:
data_sims.ix[i][j] = 0
else:
serial_top_names = data_neighbours.ix[serial][1:10]
serial_top_sims = dataSim.ix[serial].sort_values(ascending=False)[1:10]
user_preferences = dataUser.ix[user,serial_top_names]
data_sims.ix[i][j] = getScore(user_preferences,serial_top_sims)
详细错误:
> ------------------------------------------------ ---------------------------- TypeError Traceback(最近一次调用最后一次) 在 () 9 其他: 10 Serial_top_names = data_neighbours.ix[序列][1:10] ---> 11 serial_top_sims = dataSim.ix[serial].sort_values(ascending=False)[1:10] 12 user_preferences = dataUser.ix[用户,serial_top_names] 13 类型错误:sort_values() 缺少 1 个必需的位置参数:“by”
我尝试使用以下方法,但没有成功
pd.DataFrame.sort_values(dataSim,ascending=[0])[1:10]
我有什么遗漏的吗?
Pandas 的文档提到:
DataFrame.sort_values(by,
axis=0,
ascending=True,
inplace=False,
kind='quicksort',
na_position='last')
by:str 或 str 列表 引用轴项目的名称或名称列表。
在我的例子中:
df.groupby('product').agg({'weight':'sum'}).sort_values(by='weight')
添加 by='weight' 解决了 TypeError: sort_values() 缺少 1 个必需的位置参数:'by'
数据框可能有多个列,因此请指定要排序的列。
df = df.sort_values(by='sentence_length').reset_index(drop=True)
by 指用于对数据框进行排序的列名称。 例如,下面的数据框采用“reduced_lunch”列对数据框进行排序。
d2=d1[['name', 'reduced_lunch','stu_teach_ratio']]
print(d2.head().sort_values('reduced_lunch'))
name reduced_lunch stu_teach_ratio
0 Allendale Elementary School 10.0 15.7
4 Barfield Elementary 26.0 14.8
2 Avoca Elementary 43.0 16.6
1 Anderson Elementary 71.0 12.8
3 Bailey Middle 91.0 13.1