你如何在熊猫中将多行连接成一行?
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】:试试groupby
和agg
:
>>> 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 中将多行文本连接成单个文本字符串