在DataFrame中对列进行排序

莫妮卡

我得到了以下DataFrame:

   r1       Angle1          r2        Angle      Res         System
0   1.250590    5.156790    5.724081  7.712978e+06   8.874775     #EN1
1   1.246085    5.678428    5.720825  3.353667e+04   8.813887     #EN2
2   1.250148    5.205040    5.700498  3.564115e+02   8.865881     #EN1
3   1.241692    6.256054    5.708635  8.518839e+06   8.828826     #EN3
4   1.247089    5.556371    5.718326  9.315014e+04   8.813084     #EN1
5   1.854719    0.936551    1.186143  1.853106e+01   8.669692     #EN2
6   1.260329    4.225127    5.687622  5.435705e+01   9.223529     #EN3
7   1.251378    5.072078    5.756885  1.449325e+01   8.893499     #EN2
8   1.037451   39.403842    1.340242  2.438089e+04  14.509603     #EN1

我想根据上一个系统对其进行排序。我试图做到这一点:

    custom_dict = {'#EN1':0, '#EN2':1, '#EN3':2}
    s = df_ALL['System'].apply(lambda x: custom_dict[x])
    s.sort()
    df_ALL.set_index(s.index).sort()

但是我得到相同的DataFrame作为回报。最上面的警告弹出:

FutureWarning: sort is deprecated, use sort_values(inplace=True) for INPLACE sorting
  s.sort()
FutureWarning: sort(....) is deprecated, use sort_index(.....)
  df_ALL = df_ALL.set_index(s.index).sort() 

有人可以详细说明我在做什么错吗?

耶斯列尔

看来您需要sort_values

df = df.sort_values('System')
print (df)
         r1     Angle1        r2         Angle        Res System
0  1.250590   5.156790  5.724081  7.712978e+06   8.874775   #EN1
2  1.250148   5.205040  5.700498  3.564115e+02   8.865881   #EN1
4  1.247089   5.556371  5.718326  9.315014e+04   8.813084   #EN1
8  1.037451  39.403842  1.340242  2.438089e+04  14.509603   #EN1
1  1.246085   5.678428  5.720825  3.353667e+04   8.813887   #EN2
5  1.854719   0.936551  1.186143  1.853106e+01   8.669692   #EN2
7  1.251378   5.072078  5.756885  1.449325e+01   8.893499   #EN2
3  1.241692   6.256054  5.708635  8.518839e+06   8.828826   #EN3
6  1.260329   4.225127  5.687622  5.435705e+01   9.223529   #EN3

但是如果需要dict使用排序的自定义排序类别

custom_dict = {'#EN1':0, '#EN2':2,'#EN3':1}
#get order by sorted values of dict
cat = sorted(custom_dict, key=custom_dict.get)
print (cat)
['#EN1', '#EN3', '#EN2']

df['System'] = df['System'].astype('category', categories=cat, ordered=True)
df = df.sort_values('System')
print (df)
         r1     Angle1        r2         Angle        Res System
0  1.250590   5.156790  5.724081  7.712978e+06   8.874775   #EN1
2  1.250148   5.205040  5.700498  3.564115e+02   8.865881   #EN1
4  1.247089   5.556371  5.718326  9.315014e+04   8.813084   #EN1
8  1.037451  39.403842  1.340242  2.438089e+04  14.509603   #EN1
3  1.241692   6.256054  5.708635  8.518839e+06   8.828826   #EN3
6  1.260329   4.225127  5.687622  5.435705e+01   9.223529   #EN3
1  1.246085   5.678428  5.720825  3.353667e+04   8.813887   #EN2
5  1.854719   0.936551  1.186143  1.853106e+01   8.669692   #EN2
7  1.251378   5.072078  5.756885  1.449325e+01   8.893499   #EN2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

对Pandas Dataframe列中的列表进行排序

在Pandas DataFrame中对列进行排序

按列中的名称对pandas DataFrame中的数据进行排序

在SparkR中对DataFrame中的特定列进行排序

按特定顺序对Pandas DataFrame中的列进行排序

如何对DataFrame中特定列的行进行排序?

在 Pandas DataFrame 中按逗号数对列进行排序

根据列值对 Pandas Dataframe 进行排序

在oracle中对列进行排序

在Excel中对列进行排序

在SQL中对列进行排序

在GridView中对列进行排序

如何按两列或更多列对python pandas中的dataFrame进行排序?

插入DataFrame列并根据PySpark或Pandas中的另一列进行排序

在Spark DataFrame中对结构数组进行排序

如何按特定列对Spark DataFrame中的结构类型数组进行排序?

在Pandas DataFrame中首先对包含字符串的列进行排序

如何使用字符串列表对Pandas Dataframe中的列进行排序

pandas dataframe根据列总数对列进行排序

在一列中按出现顺序对DataFrame进行排序,而在其他列中保留顺序

根据列值对dataframe.groupby进行排序(递减)

根据列值对具有MultiIndex的pandas DataFrame进行排序

用不同的顺序对两列的Spark Dataframe进行排序

使用给定的输入列表对DataFrame列进行排序

Pandas DataFrame 对每一列进行排序

按多列和重复索引对pandas DataFrame进行排序

对 hql 中的多列进行排序

对熊猫中的列值进行排序

在Angular中对表格列进行排序

TOP 榜单

热门标签

归档