python - 仅对 20 列的数据框中的 2 列进行排序

标签 python python-3.x pandas

我在 5 行组(数据框)中有 20 列。我想强制仅对 2 列进行排序,并保持其他列不变。

我尝试过使用

group2['Col1','Col2'] = group2['Col1','Col2'].sort_values(by=['Col2']) 

它产生错误

return self._engine.get_loc(self._maybe_cast_indexer(key))

  File "pandas/_libs/index.pyx", line 108, in pandas._libs.index.IndexEngine.get_loc

  File "pandas/_libs/index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc

  File "pandas/_libs/hashtable_class_helper.pxi", line 1601, in pandas._libs.hashtable.PyObjectHashTable.get_item

  File "pandas/_libs/hashtable_class_helper.pxi", line 1608, in pandas._libs.hashtable.PyObjectHashTable.get_item

KeyError: ('col1', 'col2')

输入和所需的输出是:

enter image description here

最佳答案

通过 double [] 创建子集并分配回 numpy 数组:

group2 = pd.DataFrame({
         'Col1':list('nyynny'),
         'Col2':[1,3,5,7,2,0],
         'Col3':[4,5,4,5,5,4],
         'Col4':[7,8,9,4,2,3],
         'Col5':[5,3,6,9,2,4],
         'Col6':list('aaabbb')
})
group2[['Col1','Col2']] = group2[['Col1','Col2']].apply(np.sort).values 
print (group2)
  Col1  Col2  Col3  Col4  Col5 Col6
0    n     0     4     7     5    a
1    n     1     5     8     3    a
2    n     2     4     9     6    a
3    y     3     5     4     9    b
4    y     5     5     2     2    b
5    y     7     4     3     4    b

关于python - 仅对 20 列的数据框中的 2 列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57816825/

相关文章:

python - 如何在 Django 中从 models.py 查询数据库项?

c++ - 通过引用从 Python 调用 C++ 函数

python - 私有(private)属性和设置限制

python - Pandas 数据框类型的问题

python - 识别列表python中最不常见的数字

python-3.x - 用 Pandas 中另一个数据帧的列替换一个数据帧中的列

python - 如何将列表与数据框的列进行比较,并在数据框列和列表之间的元素匹配时从列表中删除元素?

python - 合并相同标签进行计数

python - 如何构建可以处理非数字目标的用户友好的 sklearn 回归器?

python - 多维数组中列的平方和的平方根