根据条件将 nan 值替换为同一列中的其他值

问题描述 投票:0回答:1

我正在与评论者一起清理亚马逊数据框。我在评论者 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())))
python duplicates nan
1个回答
0
投票

似乎您正在尝试处理重复审阅者的“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)
© www.soinside.com 2019 - 2024. All rights reserved.