Pandas:TypeError:sort_values()缺少1个必需的位置参数:“by”

9
我遇到了TypeError: sort_values()缺少一个必需的位置参数:'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 (most recent call last)
 in ()
      9         else:
     10             serial_top_names = data_neighbours.ix[serial][1:10]
---> 11             serial_top_sims = dataSim.ix[serial].sort_values(ascending=False)[1:10]
     12             user_preferences = dataUser.ix[user,serial_top_names]
     13
TypeError: sort_values()缺少一个必需的位置参数:'by'

我尝试使用以下方法,但没有成功

pd.DataFrame.sort_values(dataSim,ascending=[0])[1:10]

我是否漏掉了什么内容?


根据错误信息,您可能需要将 by=someSortingFunction 作为参数放入,但我不确定。 - Max
当您定义serial = data_sims.columns[j]时,您使用了列,但是在dataSim.ix[serial]中,您正在对行进行索引。这是有意的吗?它仍应返回一个Series,并且不应该需要一个“by”参数,但这可能与问题有关。另外,您使用的pandas版本是什么? - ayhan
@ayhan 是的,这是有意为之的。0.19.2是我正在使用的pandas版本。http://www.salemmarafi.com/code/collaborative-filtering-with-python/是参考资料。 - ds_ro
欢迎来到 Stack Overflow!如果您创建一个“最小、完整和可验证”的示例,那么我们就更容易帮助您。 - Stephen Rauch
2个回答

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() 缺少一个必需的位置参数:'by'


1
数据框可能有多列,因此需要指定您想按其排序的列。
df = df.sort_values(by='sentence_length').reset_index(drop=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接