首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于共享值在python df中移动特定值

基于共享值在python df中移动特定值
EN

Stack Overflow用户
提问于 2020-10-24 07:56:16
回答 1查看 18关注 0票数 0

我当前的df:

代码语言:javascript
复制
clinical #     date collected      name       result      submitter

123                3/2/2020       flu a       negative      hospital

123                3/2/2020       flu b       positive      hospital

123                3/2/2020       flu c       positive      hospital

123                3/2/2020       flu d       negative      hospital

567                7/7/1945       flu a       negative      hospital

567                7/7/1945       flu b       negative      hospital

567                7/7/1945       flu c       positive      hospital

567                7/7/1945       flu d       negative      hospital

989                8/8/1988       flu a       negative      hospice 

989                8/8/1988       flu b       negative      hospice 

989                8/8/1988       flu c       negative      hospice 

989                8/8/1988       flu d       negative      hospice 

989                8/8/1988       flu e       negative      hospice 

989                8/8/1988       flu f       negative      hospice

我的df有数千行,行数总是在变化。每个人在第一列中用一个数字表示,例如: Jane用123表示。简做了甲型流感、乙型流感、丙型流感和丁型流感的检测。我要把简的信息压缩成一行。我需要在行之间变化的变量,即"name“和"result”。所有其他信息都是恒定的,可以删除。一些患者被检测出更多的值,比如989号患者,他做了6次流感测试,而不是像简那样做了4次。同样,同样的过程也需要发生。像流感类型和伴随的测试结果这样的唯一值将被移到同一行中。

理想的数据帧应该是这样的:

代码语言:javascript
复制
12      3/2/2020   hospital flu a -  flu b +   flu c -  flu d -  
567     7/7/1977   hospital flu a +  flu b +   flu c -  flu d -  
989     8/8/1988   hospital flu a -  flu b +   flu c -  flu d -  flu e +  flu f +  

也许有一种更好的方法可以做到这一点--比如用钥匙或字典?我非常感谢任何可行的解决方案。

提前感谢您的建议:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-24 08:14:10

尝试一下,使用map创建一个连接的结果文本字段,将单词转换为正负符号,然后使用joinagg函数执行groupby

代码语言:javascript
复制
df['restxt'] = (df['collected'] + ' ' + 
                df['name'] + ' ' + 
                df['result'].map({'negative':'-', 'positive':'+'}))

df.groupby(['clinical #', 'date', 'submitter'], as_index=False)['restxt'].agg(' '.join)

输出:

代码语言:javascript
复制
   clinical #      date submitter                                           restxt
0         123  3/2/2020  hospital                  flu a - flu b + flu c + flu d -
1         567  7/7/1945  hospital                  flu a - flu b - flu c + flu d -
2         989  8/8/1988   hospice  flu a - flu b - flu c - flu d - flu e - flu f -
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64508654

复制
相关文章

相似问题

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