你如何在熊猫中将多行连接成一行?

Posted

技术标签:

【中文标题】你如何在熊猫中将多行连接成一行?【英文标题】:How do you join multiple rows into one row in pandas? 【发布时间】:2021-11-22 19:20:50 【问题描述】:

我有一个要添加到数据框的列表。它看起来像这样:

list_one = ['apple','banana','cherry',' ', 'grape', 'orange', 'pineapple','']

如果我将列表添加到数据框,使用 df = pd.DataFrame('list_one':list_one) 它将如下所示:

       list_one
   -------------
   0   apple
   1   banana 
   2   cherry
   3  
   4   grape
   5   orange
   6   pineapple
   7  

我希望将一些行合并为一行,以便数据框看起来像这样:

       list_one
   -----------------------------
   0   apple, banana, cherry 
   1   grape, orange, pineapple

有没有简单的方法来做到这一点?

感谢您花时间阅读我的问题并以任何方式提供帮助。

【问题讨论】:

【参考方案1】:

通过Series.str.contains 为匹配词创建掩码,通过~ 反转并通过Series.cumsum 创建组,仅过滤匹配的行并使用join 函数传递给GroupBy.agg

m = df['list_one'].str.contains('\w+')
df = df[m].groupby((~m).cumsum(), as_index=False).agg(', '.join)
print (df)
                   list_one
0     apple, banana, cherry
1  grape, orange, pineapple

【讨论】:

【参考方案2】:

试试groupbyagg

>>> df.groupby(df.loc[df['list_one'].str.contains('\w+')].index.to_series().diff().ne(1).cumsum(), as_index=False).agg(', '.join)
                   list_one
0     apple, banana, cherry
1  grape, orange, pineapple
>>> 

【讨论】:

非常感谢您抽出宝贵时间帮助我。您的解决方案不起作用,但我仍然非常感谢您的努力。它与上面的解决方案非常相似,只是略有不同。再次感谢您!

以上是关于你如何在熊猫中将多行连接成一行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 中将多行文本连接成单个文本字符串

在 MySQL 中将多行连接成单行

如何在 OBIEE 11g 中将多个结果连接成一行?

如何将多行单元格数据转变成一行?这个Excel技巧你一定不知道!

如何在 BigQuery 中将多行聚合为一行?

如何在mysql中将单行插入查询重构为多行插入查询?