繁体   English   中英

使用 Python,如何在保留/忽略所有“nan”值的同时删除 PANDAS dataframe 列中的重复项?

[英]Using Python, how do I remove duplicates in a PANDAS dataframe column while keeping/ignoring all 'nan' values?

我有一个这样的 dataframe:

import pandas as pd

data1 = {
     "siteID": [1, 2, 3, 1, 2, 'nan', 'nan', 'nan'],
     "date": [42, 30, 43, 29, 26, 34, 10, 14],
    }
df = pd.DataFrame(data1)

但我想删除 siteID 中的所有重复项,仅保留最新值并保留所有“nan”值。

我接近这段代码:

df_no_dup = df.sort_values('date').drop_duplicates('siteID', keep='last')

它只保留具有最高日期值的 siteID。 问题是,当我想全部忽略它们时,大多数带有“nan”的 siteID 行都被删除了。 有什么方法可以保留 siteID 等于“nan”的所有行吗?

预计 output:

siteID  date
    nan 10
    nan 14
    2   30
    nan 34
    1   42
    3   43

我会使用df.duplicated来创建自定义条件。

像这样

df.drop(df[df.sort_values('date').duplicated('siteID', keep='last') & (df.siteID!='nan')].index)

结果

  siteID  date
0      1    42
1      2    30
2      3    43
5    nan    34
6    nan    10
7    nan    14

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM