繁体   English   中英

Pandas groupby给出任何非纳米值

[英]Pandas groupby give any non nan values

我正在尝试在给定此groupby索引的表上执行groupby,所有值都是正确的或Nan。 例如:

    id country    name
0    1  France    None
1    1  France  Pierre
2    2    None   Marge
3    1    None  Pierre
4    3     USA     Jim
5    3    None     Jim
6    2      UK    None
7    4   Spain  Alvaro
8    2    None   Marge
9    3    None     Jim
10   4   Spain    None
11   3    None     Jim

我只想获得4个人中每个人的价值,这些人永远不会发生冲突,例如:

   country    name
id                
1   France  Pierre
2       UK   Marge
3      USA     Jim
4    Spain  Alvaro

我试过了:

groupby().first()
groupby.nth(0,dropna='any'/'all')

乃至

groupby().apply(lambda x: x.loc[x.first_valid_index()])

一切都无济于事。 我错过了什么?

编辑:帮助您制作用于测试的示例数据框:

df = pd.DataFrame({'id':[1,1,2,1,3,3,2,4,2,3,4,3],'country':['France','France',None,None,'USA',None,'UK','Spain',None,None,'Spain',None],'name':[None,'Pierre','Marge','Pierre','Jim','Jim',None,'Alvaro','Marge','Jim',None,'Jim']})

Pandas groupby.first返回第一个非空值但不支持None,请尝试

df.fillna(np.nan).groupby('id').first()

    country name
id      
1   France  Pierre
2   UK      Marge
3   USA     Jim
4   Spain   Alvaro

当值为None时,可以指定dropna

df.groupby('id').first(dropna=True)

   country    name
id                
1   France  Pierre
2       UK   Marge
3      USA     Jim
4    Spain  Alvaro

暂无
暂无

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

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