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 数据帧时