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

Posted

技术标签:

【中文标题】Pandas:TypeError:sort_values() 缺少 1 个必需的位置参数:\'by\'【英文标题】:Pandas: TypeError: sort_values() missing 1 required positional argument: 'by'Pandas:TypeError:sort_values() 缺少 1 个必需的位置参数:'by' 【发布时间】:2017-07-16 14:30:21 【问题描述】:

我面临 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[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 类型错误:sort_values() 缺少 1 个必需的位置参数:'by'

我尝试使用以下但没有用

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

我有什么遗漏的吗?

【问题讨论】:

根据错误消息,您可能需要将by=someSortingFunction 作为参数,但我不确定 当您定义serial = data_sims.columns[j] 时,您使用列,但使用dataSim.ix[serial] 您是在对行进行索引。这是故意的吗?它仍应返回一个 Series 并且不需要 by 参数,但这可能与问题有关。还有你用的是什么版本的熊猫? @ayhan 是的,它是故意的。 0.19.2 是我正在使用的熊猫版本。 salemmarafi.com/code/collaborative-filtering-with-python 是参考 欢迎来到 Stack Overflow!如果您创建一个 Minimal, Complete, and Verifiable 示例,我们可以更轻松地为您提供帮助。 【参考方案1】:

documentation for 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() missing 1 required positional argument: 'by'

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于Pandas:TypeError:sort_values() 缺少 1 个必需的位置参数:'by'的主要内容,如果未能解决你的问题,请参考以下文章

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

pandas.DataFrame.fillna - TypeError:只有整数标量数组可以转换为标量索引

Pandas/BigQuery - TypeError:“str”和“int”实例之间不支持“<”

将 Pandas 数据帧转换为 Spark 数据帧的 TypeError

python pandas dataframe index,错误TypeError:输入必须是可迭代的,pandas版本可能错误

TypeError: unhashable type: 'numpy.ndarray' 合并来自 BigQuery 的 pandas 数据帧时