我有一个非常长的数据集,我想按升序排序。我看到输出有点困惑,因为排序后索引不会从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个单独的列。所以在这个输出中,我是否开始从最右边的列读取数据?非常感谢您的解释。
答案 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')