我制作了一个文本文件,如下所示:
Houston 69.7 degrees F 2,144,491
Hialeah 77.9 degrees F 217,141
Miami 77.3 degrees F 404,048
Carol City 77.3 degrees F 59,443
North Westside 77.3 degrees F 101,285我尝试按温度从最低到最高对条目进行排序。到目前为止,这是我的尝试。mf2是包含我的列表的文件,mf3是我要写入的文件。
h = aline.find('degrees')
for aline in sorted(mf2, key=lambda aline: aline[(h-5):(h-1)], reverse=False):
mf3.write(aline)
mf3.close()该代码不断返回一个列表,如下所示:
Houston 69.7 degrees F 2,144,491
Hialeah 77.9 degrees F 217,141
Miami 77.3 degrees F 404,048
Carol City 77.3 degrees F 59,443
Miramar 76.9 degrees F 108,072
Tamiami 76.8 degrees F 54,788我已经花了几个小时在这上面,我不知道为什么它不能正确排序。有什么建议吗?
发布于 2014-02-24 15:56:26
假设每一行都是name temperature "degrees F" some-number格式,您可以尝试
sorted (mf2, key = lambda x: float (x.split (' ') [-4] ) )发布于 2021-06-16 04:00:27
data=["Houston 69.7 degrees F 2,144,491",
"Hialeah 77.9 degrees F 217,141",
"Miami 77.3 degrees F 404,048",
"Carol City 77.3 degrees F 59,443",
"North Westside 77.3 degrees F 101,285"]
city=[]
temperature=[]
measure=[]
counts=[]
for s in data:
#print(s)
all_matches = re.findall(r'([a-zA-Z]+\s*[a-zA-Z]*)|([0-9.,]+)',s)
city.append(all_matches[0][0])
temperature.append(all_matches[1][1])
measure.append(all_matches[2][0])
counts.append(all_matches[3][1])
df=pd.DataFrame({'city':city, 'temperature':temperature, 'measure':measure, 'counts':counts})
df['temperature']=df['temperature'].astype('float')
df['counts']=df['counts'].apply(lambda row: int(row.replace(',','')))
print(df.sort_values(by='counts', ascending=False))输出:
city temperature measure counts
0 Houston 69.7 degrees F 2144491
2 Miami 77.3 degrees F 404048
1 Hialeah 77.9 degrees F 217141
4 North Westside 77.3 degrees F 101285
3 Carol City 77.3 degrees F 59443https://stackoverflow.com/questions/21981755
复制相似问题