Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫在排序时是否将整数值视为字符串?为什么?_Python_Sorting_Pandas_Dataframe - Fatal编程技术网

Python 熊猫在排序时是否将整数值视为字符串?为什么?

Python 熊猫在排序时是否将整数值视为字符串?为什么?,python,sorting,pandas,dataframe,Python,Sorting,Pandas,Dataframe,我试图根据两列中的值对pandas数据帧进行排序。出于某种原因,它将整数视为字符串,而之前的一些代码中这些值仍然是整数。不确定是什么导致了这些变化,但无论如何: df = contig pos ref haplotype_block hap_X hap_Y odds_ratio My_hap Sp_hap 2 5207 T 1856 T A 167.922 T A 2 5238 G 1856 C G - C G

我试图根据两列中的值对pandas数据帧进行排序。出于某种原因,它将整数视为字符串,而之前的一些代码中这些值仍然是整数。不确定是什么导致了这些变化,但无论如何:

df = 

contig  pos ref haplotype_block hap_X   hap_Y   odds_ratio  My_hap  Sp_hap
2   5207    T   1856    T   A   167.922 T   A
2   5238    G   1856    C   G   -   C   G
2   5723    A   1856    A   T   -   A   T
2   5867    C   1856    T   C   -   T   C
2   155667  G   2816    G   *   1.0 N   N
2   155670  T   2816    T   *   -   N   N
2   67910   C   2   C   T   0.21600000000000003 T   C
2   67941   A   2   A   T   -   T   A
2   68016   A   2   A   G   -   G   A
2   118146  C   132 T   C   1369.0  T   C
2   118237  A   132 C   A   -   C   A
2   118938  A   1157    T   A   0.002   A   T


df.sort_values(by=['contig', 'pos'], inplace=True, ascending=False)

print(df) #is giving me


contig  pos ref haplotype_block hap_X   hap_Y   odds_ratio  My_hap  Sp_hap
2   118146  C   132 T   C   1369.0  T   C
2   118237  A   132 C   A   -   C   A
2   118938  A   1157    T   A   0.002   A   T
2   155667  G   2816    G   *   1.0 N   N
2   155670  T   2816    T   *   -   N   N
2   5207    T   1856    T   A   167.922 T   A
2   5238    G   1856    C   G   -   C   G
2   5723    A   1856    A   T   -   A   T
2   5867    C   1856    T   C   -   T   C
......
因此,它仅使用两列的第一位数字对数据进行排序
(contig和pos)
。为什么会这样?还有一个非常简单的内存有效的解决方法

谢谢

编辑后详细信息:

print(df.info())

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 333 entries, 0 to 332
Data columns (total 9 columns):
contig             333 non-null int64
pos                333 non-null object
ref                333 non-null object
haplotype_block    333 non-null int64
hap_X              333 non-null object
hap_Y              333 non-null object
odds_ratio         333 non-null object
My_hap             333 non-null object
Sp_hap             333 non-null object
dtypes: int64(2), object(7)
memory usage: 23.5+ KB
None
打印(df.info())
范围索引:333个条目,0到332
数据列(共9列):
重叠333非空int64
位置333非空对象
ref 333非空对象
单倍型_block 333非空int64
hap_X 333非空对象
hap_Y 333非空对象
赔率比333非空对象
My_hap 333非空对象
Sp_hap 333非空对象
数据类型:int64(2),对象(7)
内存使用率:23.5+KB
没有一个

将值转换为整数

df['contig'] = df['contig'].astype(int)
df['pos'] = df['pos'].astype(int)
然后使用
就地排序

df.sort_values(by=['contig', 'pos'], inplace=True, ascending=True)

谢谢,

将值转换为整数:

df['contig'] = df['contig'].astype(int)
df['pos'] = df['pos'].astype(int)
然后使用
就地排序

df.sort_values(by=['contig', 'pos'], inplace=True, ascending=True)

谢谢,

这里的数据类型是什么?
df.info()
为这些列显示了什么?你有没有试着把contig转换成int
df['contig']=df['contig'].astype(int)
同样,对于
pos
这里的数据类型是什么?
df.info()
为这些列显示了什么?你有没有试着把contig转换成int
df['contig']=df['contig'].astype(int)
和同样的
pos