pandas中如何将单列多行按空行分组合并为单行?
解决方案
你可以通过pandas分组聚合实现需求,核心逻辑是用空内容作为分组分隔,拼接同组的有效内容:
方法1:直接处理已生成的DataFrame
import pandas as pd # 你的原始数据 list_one = ['apple','banana','cherry',' ', 'grape', 'orange', 'pineapple',''] df = pd.DataFrame({'list_one':list_one}) # 1. 标记有效行(排除空字符串、全空格的行) df['is_valid'] = df['list_one'].str.strip().ne('') # 2. 生成分组ID:每次遇到无效行,分组编号+1 df['group_id'] = (~df['is_valid']).cumsum() # 3. 按分组拼接有效内容,得到最终结果 result = df[df['is_valid']].groupby('group_id')['list_one'].agg(', '.join).reset_index(drop=True).to_frame('list_one')
输出result即可得到你需要的格式:
list_one 0 apple, banana, cherry 1 grape, orange, pineapple
方法2:提前处理原始列表(更高效)
如果可以在转DataFrame前处理原始列表,用itertools.groupby实现更简洁:
import pandas as pd from itertools import groupby list_one = ['apple','banana','cherry',' ', 'grape', 'orange', 'pineapple',''] res = [] for is_valid, items in groupby(list_one, key=lambda x: x.strip() != ''): if is_valid: res.append(', '.join(items)) result = pd.DataFrame({'list_one': res})
内容的提问来源于stack exchange,提问作者shorttriptomars
相关产品推荐
相关产品推荐

