我的 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
请指出我哪里做错了?谢谢
相关分类