我正在与评论者一起清理亚马逊数据框。我在评论者 ID 列中有重复项,因为有些用户留下了多条评论。但是,在 reviewerName 列中,我同时拥有同一审阅者的 NaN 值和名称。如何删除重复审阅者的 reviewerName 列中的 NaN 值并仅保留名称?
我尝试使用 np.where 用名称替换 NaN 值(我想在替换后删除重复项),但收到错误消息:&: 'str' 和 'bool' 不支持的操作数类型
reviewers = np.where(((reviewers[reviewers.duplicated('reviewerID', keep=False) == True])&(reviewers['reviewerName']==reviewers['reviewerName'].isna())),((reviewers[reviewers.duplicated('reviewerID', keep=False) == True])&(reviewers['reviewerName']!=reviewers['reviewerName'].isna())), ((reviewers[reviewers.duplicated('reviewerID', keep=False) == True])&(reviewers['reviewerName']!=reviewers['reviewerName'].isna())))
似乎您正在尝试处理重复审阅者的“reviewerName”列中的 NaN 值。解决此问题的一种方法是使用 pandas 中的 fillna() 函数,将 NaN 值替换为重复审阅者的相应名称。然后,您可以根据“reviewerID”列删除重复的行。
import pandas as pd
# Assuming your DataFrame is named 'reviewers'
reviewers['reviewerName'] = reviewers.groupby('reviewerID')['reviewerName'].transform(lambda x: x.fillna(method='ffill').fillna(method='bfill'))
reviewers.drop_duplicates(subset='reviewerID', keep='first', inplace=True)