![](/img/trans.png)
[英]How to convert all columns in Pandas DataFrame to 'object' while ignoring NaN?
[英]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.