如何按group列合并DataFrame中po列非空值并用斜杠连接?
解决方案
方法一:分组后聚合过滤空值
直接对分组后的po列执行聚合操作,在聚合逻辑里过滤空字符串并完成拼接:
import pandas as pd df = pd.DataFrame({'group':[1,1,1,1,1,1,2,2,2,2,3,3], 'po':['1a','1b','','','','','2a','2b','2c','','3a',''], 'part':['a','b','c','d','e','f','g','h','i','j','k','l']}) # 按group分组,拼接非空po值 result = df.groupby('group')['po'].agg(lambda x: '/'.join([val for val in x if val != ''])).reset_index() print(result)
运行输出:
group po 0 1 1a/1b 1 2 2a/2b/2c 2 3 3a
方法二:先过滤空值再分组拼接
如果数据量较大,先过滤掉po为空的行再分组,能提升处理效率:
# 过滤po列非空的行,再分组拼接 filtered_df = df[df['po'] != ''] result = filtered_df.groupby('group')['po'].agg('/'.join).reset_index()
关键说明
- 以上代码针对**字符串空值
''**处理,若数据中是NaN类型的空值,需将判断条件改为val.notna()或df['po'].notna() reset_index()用于将分组后的索引转为普通列,确保输出为标准结构的DataFrame
内容的提问来源于stack exchange,提问作者ghost_like
相关产品推荐
相关产品推荐

