【发布时间】:2019-02-28 02:26:48
【问题描述】:
对于一个数据框df
df = pd.DataFrame({'id': ['1', '1', None, None, '1', '2', '2', '3', None, '4'],
'last_name': ['Clinton', 'Clinton', 'Clinton','Clinton', None, 'Bush', 'Bush', None, 'Obama', 'Obama'],
'first_name': ['Bill', 'William', 'Bill', 'William', None, 'Georg W.', 'Georg', None, 'Barack', 'Barack']})
df['id'] = df['id'].astype('category')
print(df)
给出下表
id last_name first_name 0 1 克林顿比尔 1 1 克林顿威廉 2 南克林顿比尔 3 南克林顿威廉 4 1 NaN 无 5 2 布什乔治 W. 6 2 布什乔治 7 3 NaN 无 8 NaN 奥巴马巴拉克 9 4 奥巴马巴拉克我想按id 和last_name 分组,删除重复项,并删除None,如果有多个条目。所以输出应该是这样的
我的一个问题是 groupby 不起作用,因为它排除了 None / NaN 值。
有什么优雅的想法吗?
【问题讨论】:
-
我相信事情是:仅当组大小为
>1时才删除NaNs。但是你不能一开始就将它们组合在一起,所以不要认为可以这样做。你有那些NaN有什么理由吗?也许问题在于构建数据框 -
感谢@RafaelC 这正是问题所在。
-
迈克尔,我尝试了一个解决方案。假设您有一个“排序”的数据框,它应该可以工作。看看
标签: pandas pandas-groupby