我有来自ImDB的演员表。
我要从此表中删除 imdb_actors.birthYear 丢失或小于1950年的所有行,并删除 imdb_actors.deathYear 具有一定价值的行。
想法是要获取一个具有活跃和未退休演员的数据集。
imdb_actors.birthYear.dtype
Out:dtype('O')
我无法转换为字符串,这无济于事:imdb_actors['birthYear'] = imdb_actors['birthYear'].astype('|S')
。整年都毁了。
这就是为什么我无法执行:imdb_actors[imdb_actors.birthYear >= 1955]
当我尝试imdb_actors.birthYear.astype(str).astype(int)
时收到消息:ValueError: invalid literal for int() with base 10: '\\N'
丢弃缺失并应用> = 1950条件的方式是什么?
答案 0 :(得分:2)
首先将数字数据转换为数字序列:
beginSheet:completionHandler:
指定NSWindow
会将不可转换的元素强制为NSMutableArray
。
然后为您的3个条件创建掩码,通过矢量化的removeAllObjects
“或”运算符组合,通过num_cols = ['birthYear', 'deathYear']
df[num_cols] = df[num_cols].apply(pd.to_numeric, errors='coerce')
求反,然后在数据帧上应用布尔索引:
errors='coerce'
答案 1 :(得分:0)
您的问题是您的birthYear年份的类型是Object,它将用于字符串或类型的混合。
您首先需要通过应用如下函数来清理该系列:
imdb_actors.birthYear = imdb_actors.birthYear.map(lambda x: int(x) if str(x) != '\\N' else pd.np.nan)
然后您可以进行过滤:
imdb_actors[imdb_actors.birthYear >= 1955]