Python 熊猫的定制分类

Python 熊猫的定制分类,python,pandas,Python,Pandas,这是我的数据帧: df1 = pd.DataFrame({'sym': ['msft', 'tsla', 'amd', 'bac'], 'close': [102, 100, 35, 30]}) 我想使用sym列的自定义顺序对df进行排序 我期望的结果如下所示: sym close 0 bac 30 1 tsla 100 2 msft 102 3 amd 35 考虑到这似乎是一个非常任意的顺序,我认为您最好的选择是添加另一列,该列表示您希望元素

这是我的数据帧:

df1 = pd.DataFrame({'sym': ['msft', 'tsla', 'amd', 'bac'], 'close': [102, 100, 35, 30]})
我想使用
sym
列的自定义顺序对
df
进行排序

我期望的结果如下所示:

   sym  close
0   bac     30
1  tsla    100
2  msft    102
3   amd     35

考虑到这似乎是一个非常任意的顺序,我认为您最好的选择是添加另一列,该列表示您希望元素的顺序,按这些值的顺序排序,然后从数据帧中删除该列。但是,根据数据帧的大小,这可能需要大量的工作。然后,不管怎样,对一个大数据帧进行任意排序都将是一项艰巨的工作

那么,你可以做什么:

df1['order']=[3,2,4,1]
df1.sort_values(by='order', inplace=True)
df1.drop('order', axis=1,inplace=True)
df1.reset_index(drop=True, inplace=True)

您可以使用
numpy.argsort
指定所需的顺序

试试这个:

将熊猫作为pd导入
将numpy作为np导入
df1=pd.DataFrame({'sym':['msft','tsla','amd','bac'],'close':[102100,35,30]})
df1=df1.loc[np.argsort([2,1,3,0])]。重置索引(drop=True)
打印(df1)
输出:

   sym  close
0   bac     30
1  tsla    100
2  msft    102
3   amd     35

你好你能解释一下定制订单背后的逻辑吗?。这不是字典顺序,那又是什么呢?这是习惯!有可能吗?看起来很武断现在没有办法做这个简单的事情
df1.loc[[3,1,0,2]].reset_index(drop=True)
Btw对那些在空闲时间帮助你的人说“只要给我一个带有这个输出的代码plz”之类的话不是很好,如果没有
reset_index(drop=True)
sym
close
列将保持不变