Pandas:类型错误:sort_values() 缺少 1 个必需的位置参数:'by'

问题描述 投票:0回答:3

我面临 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]

我有什么遗漏的吗?

python pandas jupyter
3个回答
9
投票

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'


1
投票

数据框可能有多个列,因此请指定要排序的列。

df = df.sort_values(by='sentence_length').reset_index(drop=True)

0
投票

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
    
© www.soinside.com 2019 - 2024. All rights reserved.