首页 > 解决方案 > 在数据框中保留列的唯一值而不使用删除重复项

问题描述

我有一个数据框:

excel1 user_id public_key  first_seen
0      Mark    key1        1/14/2015  11:51:41 PM
1      Mark    key2        1/14/2015  11:51:41 PM
2      Mark    key3        1/14/2015  11:51:41 PM
3      Rhonda  key4        2/16/2015  2:16:04 PM
4      Rhonda  key5        2/16/2015  2:16:04 PM
5      Rhonda  key6        2/16/2015  2:16:04 PM

我想保留行但删除列中的重复first_seen条目

excel1 user_id public_key  first_seen
0      Mark    key1        1/14/2015  11:51:41 PM
1      Mark    key2        
2      Mark    key3        
3      Rhonda  key4        2/16/2015  2:16:04 PM
4      Rhonda  key5        
5      Rhonda  key6        

发生这种情况是因为我正在对两个 csv 文件执行 pd.merge:

merged_df = pd.merge(output_df, read_df, left_on="user_id", right_on="user_id_left", how="inner").drop_duplicates(
        subset=['body'], keep='first')

我在最终数据帧上尝试了 .filter() 和 .query() 方法,但无法获得所需的结果。我怎样才能得到想要的df?

标签: pythonpandasdataframe

解决方案


IIUC,您可以使用drop_duplicates

df['first_seen'] = df.drop_duplicates(['user_id', 'first_seen'])['first_seen']

输出:

   excel1 user_id public_key             first_seen
0       0    Mark       key1  1/14/2015 11:51:41 PM
1       1    Mark       key2                    NaN
2       2    Mark       key3                    NaN
3       3  Rhonda       key4   2/16/2015 2:16:04 PM
4       4  Rhonda       key5                    NaN
5       5  Rhonda       key6                    NaN

推荐阅读