vpv*_*inc 4 python sorting tuples key pandas
我有以下数据框:
df = pd.DataFrame({'Params': {0: (400, 30),
1: (2000, 10),
2: (1200, 10),
3: (2000, 30),
4: (1600, None)},
'mean_test_score': {0: -0.6197478578718253,
1: -0.6164605619489576,
2: -0.6229674626212879,
3: -0.7963084775995496,
4: -0.7854265341671137}})
Run Code Online (Sandbox Code Playgroud)
我希望根据第一列中元组的第一个元素对其进行排序。
所需输出的第一列:
{'Params': {0: (400, 30),
2: (1200, 10),
4: (1600, 10),
1: (2000, 10),
3: (2000, 30),
Run Code Online (Sandbox Code Playgroud)
我尝试df.sort_values(by=('Params'), key=lambda x:x[0])
像使用列表一样使用,.sort
但出现以下值错误:ValueError: User-provided
key function must not change the shape of the array.
我查看了 的文档sort_values()
,但它对 lambda 不起作用的原因没有多大帮助。
编辑:按照@DeepSpace的建议,我不能做
df.sort_values(by='Params')
给'<' not supported between instances of 'NoneType' and 'int'
sort_values()的文档说
key
应该期望 aSeries
并返回一个与输入形状相同的 Series。
在 中df.sort_values(by=('Params'), key=lambda x:x[0])
,x
实际上是Params
列。通过访问x
with x[0]
,您将返回 Series 的第一个元素x
,该元素与输入 Series 的形状不同。因此给你错误。
如果你想按元组的第一个元素排序,你可以这样做
df.sort_values(by='Params', key=lambda col: col.map(lambda x: x[0]))
# or
df.sort_values(by='Params', key=lambda col: col.str[0])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4735 次 |
最近记录: |