我试图在python中对txt文件进行排序,其中包含有关电影的一些信息(取自https://datasets.imdbws.com/)。我一直在研究的小样本是:
titleId ordering title region language types attributes isOriginalTitle
tt1037178 1 Women's Studies US \N \N \N 0
tt10371782 1 Episodio #1.67 IT it \N \N 0
tt10371782 2 एपिसोड #1.67 IN hi \N \N 0
tt10371782 3 エピソード #1.67 JP ja \N \N 0
tt10371790 4 एपिसोड #1.70 IN hi \N \N 0
tt10371790 5 エピソード #1.70 JP ja \N \N 0
tt10371790 6 Épisode #1.70 FR fr \N \N 0
tt10371790 7 Folge #1.70 DE de \N \N 0
tt1037179 1 Wood Simps US \N \N \N 0
我正在使用以下代码进行排序:
import pandas
df = pandas.read_csv('title.akas_test_input.txt', sep='\t', low_memory=False)
a=df.sort_values("titleId", ascending=True)
a.to_csv("title.akas_test_output.txt", sep='\t', index=None)
输出为:
titleId ordering title region language types attributes isOriginalTitle
tt1037178 1 Women's Studies US \N \N \N 0
tt10371782 1 Episodio #1.67 IT it \N \N 0
tt10371782 2 एपिसोड #1.67 IN hi \N \N 0
tt10371782 3 エピソード #1.67 JP ja \N \N 0
tt1037179 1 Wood Simps US \N \N \N 0
tt10371790 4 एपिसोड #1.70 IN hi \N \N 0
tt10371790 5 エピソード #1.70 JP ja \N \N 0
tt10371790 6 Épisode #1.70 FR fr \N \N 0
tt10371790 7 Folge #1.70 DE de \N \N 0
而我的预期输出将是这样的:
titleId ordering title region language types attributes isOriginalTitle
tt1037178 1 Women's Studies US \N \N \N 0
tt1037179 1 Wood Simps US \N \N \N 0
tt10371782 1 Episodio #1.67 IT it \N \N 0
tt10371782 2 एपिसोड #1.67 IN hi \N \N 0
tt10371782 3 エピソード #1.67 JP ja \N \N 0
tt10371790 4 एपिसोड #1.70 IN hi \N \N 0
tt10371790 5 エピソード #1.70 JP ja \N \N 0
tt10371790 6 Épisode #1.70 FR fr \N \N 0
tt10371790 7 Folge #1.70 DE de \N \N 0
我究竟做错了什么 ?
问题是您的列具有字符串类型。对该类型的列进行排序将返回词典顺序。为了您的目的,我将首先提取带有数字的部分,然后再对其进行排序。例如:
df['titleId_number']=df['titleId'].apply(lambda x: int(x.split('tt')[1]))
df.sort_values('titleId_number')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句