Python删除非整数行,转换为整型



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

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

的数字

代码中的问题是

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

不修改数据帧。因此,它将该列视为字符串类型,并相应地对其进行排序。如果你输入cln['Record Number'].dtype声明之后,它应该说清楚。如果你想修改它,你应该做赋值

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

您可以将所有字符串元素转换为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']

最新更新