首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫:将两行(基于ID)与潜在的空值合并

熊猫:将两行(基于ID)与潜在的空值合并
EN

Stack Overflow用户
提问于 2022-01-14 19:32:06
回答 1查看 402关注 0票数 0

我有一个dataframe (df1)如下:

代码语言:javascript
运行
复制
     emg     prv      name
0    NDJ  prv_NS  beta_123
1    NDJ  prv_NS       NaN
2    NDJ  prv_NS      beta
3    HCO  prv_NS  alpha123
4    HCO  prv_NS       NaN
5  H135Y  prv_NS       NaN
6   TOY1  prv_NS  alpha_12

我想将同一个emg的所有名称组合起来。因此输出应该如下所示:

代码语言:javascript
运行
复制
     emg     prv            name
0    NDJ  prv_NS   beta_123/beta
3    HCO  prv_NS        alpha123
5  H135Y  prv_NS             NaN
6   TOY1  prv_NS        alpha_12

如果没有任何EMG的名称,我将只保留NaN,如果有,只需将行连接在一起。

我的解决方案是使用groupby和unique,如下所示:df1.groupby('emg').name.apply(lambda x: '/'.join(set(x.str))).reset_index

但是我好像错了说:df1.groupby('emg').name.apply(lambda x: '/'.join(set(x.str))).reset_index

有更好的方法来做我做的事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-14 19:49:24

考虑两种不同的情况:当一个组只有NaN和至少有一个非NaN名称时:

代码语言:javascript
运行
复制
df.groupby('emg').name.apply(lambda x: 
    '/'.join(x.dropna().unique()) # at least one non-NaN <---\
    if x.notna().any() # the condition check ---->-----------|
    else np.nan # only NaN's <-------------------------------/
).reset_index()
#     emg           name
#0  H135Y            NaN
#1    HCO       alpha123
#2    NDJ  beta_123/beta
#3   TOY1       alpha_12
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70715676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档