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