python pandas:使用sort_values和drop_duplicates复制行

42fyovps  于 2023-09-29  发布在  Python
关注(0)|答案(2)|浏览(88)

我有这个数据框

在列stage中,I具有4个值:

我在这个数据框中有重复的行,我想删除它们,例如:

我想保留#8015行
并且我没有两行具有相同的stage和相同的tweet_id,例如:

我尝试了这个解决方案:

twitter_archive = twitter_rchive.sort_values(by='stage', ascending=False).drop_duplicates(subset='tweet_id', keep='first').sort_index().reset_index(drop=True)

我在这个解决方案中找到了它,但是我已经失去了10 doggo,尽管我对我的值进行了排序并保留了第一次出现。

jdgnovmf

jdgnovmf1#

你在找这个吗?

df = pd.DataFrame([{'tweet_id':89324938479283648628, 'name':'Phineas', 'stage': np.nan}, 
                   {'tweet_id':8932493847987465848628, 'name':'Tilly', 'stage': np.nan}, 
                  {'tweet_id':8932493847987465848628, 'name':'Tilly', 'stage': 'Doggo'}])
df = df.groupby(['tweet_id','name']).agg(tuple).applymap(list).reset_index()
df['stage'] = df['stage'].apply(lambda x : [i for i in x if str(i) != 'nan'])
df['stage'] = df['stage'].apply(lambda x : np.nan if len(x) == 0 else x[0])
df
2hh7jdfx

2hh7jdfx2#

首先,您的行中有一个错字:

twitter_archive = twitter_rchive.sort_values(  #<-- you missing a in archive.sort
...

第二,如果你想保留stage的value,使用.isnull()删除stage = NaN:

twitter_arc2 = twitter_archive.loc[twitter_archive['stage'].isnull()]

希望这对你有帮助

相关问题