python drop非整数行,转换为int

时间:2014-06-06 02:45:38

标签: python string sorting pandas integer

是否有一种简单的方法可以删除包含非整数单元格值的行,然后/并将字符串转换为整数,然后按升序排序?我有数据集(单列什么应该只是记录数字),其中包含我想删除的字符串。这段代码似乎有效,但随后排序似乎排序好像" float"是"字符串。"例如,记录号的排序方式如下:

0
1
2
200000000
201
3

代码:

import pandas

with open('GridExport.csv') as incsv:
    df1 = pandas.read_csv(incsv,  usecols=['Record Number'])
    cln = pandas.DataFrame()
    cln['Record Number'] = [x for x in df1['Record Number'] if x.isdigit()]
    cln.astype(float)
    print(cln.sort(['Record Number']))

有没有办法在不先转换为浮点数的情况下执行此操作?我想删除那些不适合int64的数字

2 个答案:

答案 0 :(得分:0)

您可以将所有字符串元素转换为float元素,并执行以下方法进行排序

    def numeric_compare(x, y):
    return float(x)-float(y)

>>> sorted(['10.0','2000.0','30.0'],cmp=numeric_compare)
['10.0', '30.0', '2000.0']

答案 1 :(得分:0)

代码中的问题是该行

cln['Record Number'].astype(float)

不会修改数据框。因此,它将列视为字符串类型,并相应地对其进行排序。如果您打印cln['Record Number'].dtype 声明之后,应该说清楚。 如果您想修改它,您应该进行分配

cln['Record Number'] = cln['Record Number'].astype(float)