在pandas中按升序排序数据

时间:2017-08-04 03:21:44

标签: python pandas sorting dataframe

我有一个非常长的数据集,我想按升序排序。我看到输出有点困惑,因为排序后索引不会从0运行到n。我的代码看起来像这样:

import pandas
import numpy

def imputation(filename):


    ref = pandas.read_csv(filename, sep= ',', names = ['data'])

    sort_values = ref.sort_values(['data'], ascending=True)
    q =sort_values.head(10)
    return q

print imputation("file_location")

输出如下所示:

                                      data
0     0.000000e+0 3.736717e-1 -8.896232e-2
1000  1.000000e-1 3.870175e-1 -8.870570e-2
100   1.000000e-2 3.749366e-1 -8.894183e-2
10    1.000000e-3 3.737975e-1 -8.896031e-2
1     1.000000e-4 3.736843e-1 -8.896212e-2
1001  1.001000e-1 3.870317e-1 -8.870538e-2
1002  1.002000e-1 3.870459e-1 -8.870506e-2
1003  1.003000e-1 3.870601e-1 -8.870474e-2
1004  1.004000e-1 3.870742e-1 -8.870442e-2
1005  1.005000e-1 3.870884e-1 -8.870410e-2

我不知道我在代码中做错了什么,但是我不应该期望索引也会按升序从0变为n?我的数据也是几千行,所以它显然分成了3个单独的列。所以在这个输出中,我是否开始从最右边的列读取数据?非常感谢您的解释。

1 个答案:

答案 0 :(得分:1)

首先,最好用合适的分隔符读取csv(看起来像tab \ t) ,然后按索引排序。

然而,如果你想从你的(10000,1)形状的数据帧继续,这可能会有效。

# extract your index as an integer from "data" column
# if not tab, remove '\t'
ref['index'] = ref['data'].apply(lambda x: int(x.split('\t')[0]))
ref.sort_values(by='index')