繁体   English   中英

从其他系列对象修改系列

[英]Modify series from other series objects

所以我有这样的数据:

Id  Title                   Fname   lname   email
1   meeting with Jay, Aj    Jay     kay     jk@something.com
1   meeting with Jay, Aj    Aj      xyz     aj@something.com
2   call with Steve         Steve   Jack    st@something.com
2   call with Steve         Harvey  Ray     h@something.com
3   lunch Mike              Mil     Mike    m@something.com

我想从“标题”中删除每个唯一ID的名字和姓氏。 我尝试按ID进行分组,从而为Title,Fname,Lname等提供了一系列对象

df.groupby('Id')

我已经将Fname与.agg(lambda x: x.sum() if x.dtype == 'float64' else ','.join(x))连接在一起

并保存在concated数据框中。

同样,所有其他列也将汇总。 问题是如何根据此汇总系列替换“标题”中的值。

concated['newTitle']  = [ concated.Title.str.replace(e[0]).replace(e[1]).replace(e[1])
                     for e in
                     zip(concated.FName.str.split(','), concated.LName.str.split(','))
                     ]

我想要这样或其他方式,对于每个Id,我都可以获得带有替换值的newTitle。

输出如下:

Id Title
1  Meeting with ,
2  call with 
3  lunch 

通过连接Fname和lname并替换来创建一个映射器系列,

s = df.groupby('Id')[['Fname', 'lname']].apply(lambda x: '|'.join(x.stack()))
df.set_index('Id')['Title'].replace(s, '', regex = True).drop_duplicates()


Id
1    meeting with , 
2         call with 
3             lunch 

暂无
暂无

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

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