pandas :DataFrame排序 [英] Pandas: DataFrame sorting
问题描述
我正在尝试使用sort_values方法对数据框进行排序.我有一个只有两列('TS','VALUES')的数据框(df),因此总是出现以下错误:
I'm trying to sort a dataframe using the sort_values method. I have a dataframe (df) with just two columns ('TS','VALUES') and I always getting a error as the follwoing:
df.columns
Out[88]: Index(['TS', 'VALUES'], dtype='object')
df.sort_values(by='TS',axis=1,ascending=True,inplace=True,kind='quicksort',na_position='last')
Traceback (most recent call last):
File "<ipython-input-89-53f79846b56c>", line 1, in <module>
df.sort_values(by='TS',axis=1,ascending=True,inplace=True,kind='quicksort',na_position='last')
File "C:\Users\gianm\Anaconda3\lib\site-packages\pandas\core\frame.py", line 4421, in sort_values
stacklevel=stacklevel)
File "C:\Users\gianm\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1382, in _get_label_or_level_values
raise KeyError(key)
KeyError: 'TS'
似乎python无法识别列的名称.我哪里错了?谢谢
It seems python does not recognize the name of the columns. Where I'am wrong ? Thanks
推荐答案
问题是axis=1
,它可以按索引值进行排序,因此需要axis=0
或将其删除,因为
Problem is axis=1
, it working for sorting by index values, so need axis=0
or remove it, because default parameter in sort_values
:
DataFrame.sort_values (by,axis = 0,ascending = True,inplace = False,kind ='quicksort',na_position ='last')
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
df = pd.DataFrame({'TS': [40,1,4], 'a':[1,5,2], 'd':[7,8,9]}, index=list('abc'))
print (df)
TS a d
a 40 1 7
b 1 5 8
c 4 2 9
df.sort_values(by='TS',
axis=0,
ascending=True,
inplace=True,
kind='quicksort',
na_position='last')
print (df)
TS a d
b 1 5 8
c 4 2 9
a 40 1 7
如果删除具有默认值的参数:
If remove parameters with default values:
df.sort_values(by='TS', inplace=True)
print (df)
TS a d
b 1 5 8
c 4 2 9
a 40 1 7
df.sort_values(by='a',axis=1,ascending=True,inplace=True,kind='quicksort',na_position='last')
print (df)
a d TS
a 1 7 40
b 5 8 1
c 2 9 4
这篇关于 pandas :DataFrame排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!