pandas groupby 根据条件连接
Posted
技术标签:
【中文标题】pandas groupby 根据条件连接【英文标题】:pandas groupby concatination based on a condition 【发布时间】:2022-01-09 03:47:30 【问题描述】:我有一个如下所示的数据框,我正在尝试加入名称,当类不为空时,
Name class score
kumar "" ""
ram 10 14
ravi "" ""
tej "" ""
om 12 15
我想要的输出是,
Name class score
kumarram 10 14
ravitejom 12 15
我尝试了 groupby 类,并添加为新系列,但长度不匹配,
my code:
df['g1'] = df['class'].ne("").cumsum()
df.loc[df["class"].ne(""), "Name"] = df.groupby("g1").apply(lambda x: " ".join(x["Name"].values)
【问题讨论】:
【参考方案1】:在否定条件下找到带有cumsum
的块是正确的。但是,在这里,您可以反转 cumsum 之前的系列,因此块是从下往上计算的:
blocks = df['score'].ne('""')[::-1].cumsum()
df.groupby(blocks).agg(
'Name':''.join,
'class':'last',
'score':'last'
)
输出:
Name class score
score
1 ravitejom 12 15
2 kumarram 10 14
【讨论】:
以上是关于pandas groupby 根据条件连接的主要内容,如果未能解决你的问题,请参考以下文章
根据 pandas 数据框中的条件将 value_counts 与 groupby 函数一起使用并插入新列