当其他列为空时,将列值与上述行连接

2024-04-16 04:10:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的数据框

df
col1      col2     col3
 1         ab       4
           hn       
           pr       
 2         ff       3
 3         ty       3
           rt       
 4         ym       6

现在我想从上面创建一个数据帧,如果col1和col3值都是空的(“”),只需将它附加(连接)到上面同时存在col3和col1值的行

所以最终的数据帧看起来像

df
col1      col2     col3
 1       abhnpr     4
 2         ff       3
 3       tyrt       3
 4        ym       6

我可以使用for循环并将一行与另一行进行比较来完成此任务,但执行时间会更长,因此要寻找捷径(pythonic方式)以最有效地完成相同的任务


1条回答
网友
1楼 · 发布于 2024-04-16 04:10:53

将空值替换为误报值,然后将其向前填充,然后使用聚合join乘以^{},最后使用^{}对列重新排序:

c = ['col1','col3']
df[c] = df[c].replace('', np.nan).ffill()
df = df.groupby(c)['col2'].agg(''.join).reset_index().reindex(df.columns, axis=1)
print (df)
  col1    col2 col3
0    1  abhnpr    4
1    2      ff    3
2    3    tyrt    3
3    4      ym    6

相关问题 更多 >