使用pandas从csv中删除重复项时出错

我的 csv 文件在这个链接上:


https://drive.google.com/file/d/1Pac9-YLAtc7iaN0qEuiBOpYYf9ZPDDaL/view?usp=sharing


我想通过检查每个艺术家 ID的流派长度来从 csv 中删除重复项。如果艺术家在 csv 中有 2 条记录(例如,ed sheeran的 id 6eUKZXaKkcviH0Ku9w2n3V有 2 条记录,其中一条记录有 1 种类型,而第 5 行有 5 种类型,所以我想保留类型长度最大的行)


我现在正在使用这个脚本:


import pandas

import ast



df = pandas.read_csv('39K.csv', encoding='latin-1')


df['lst_len'] = df['genres'].map(lambda x: len(ast.literal_eval(str(x))))

print(df['lst_len'][0])


df = df.sort_values('lst_len', ascending=False)


# Drop duplicates, preserving first (longest) list by ID

df = df.drop_duplicates(subset='ID')



# Remove extra column that we introduced, write to file

df = df.drop('lst_len', axis=1)

df.to_csv('clean_39K.csv', index=False)

但是这个脚本适用于 500 条记录(可能是我认为记录的大小很重要),


但是当我为我最大的文件39K.csv运行这个脚本时,我收到了这个错误:


Traceback (most recent call last):

******* error in line 5, in <module>....

    df['lst_len'] = df['genres'].map(lambda x: len(list(x)))

    df['lst_len'] = df['genres'].map(lambda x: len(list(x)))

TypeError: 'float' object is not iterable

请指出我哪里做错了?谢谢


呼如林
浏览 154回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python