【问题标题】: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

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

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

【问题讨论】:

    标签: python pandas list dataframe


    【解决方案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
      >>> 
      

      【讨论】:

      • 非常感谢您抽出宝贵时间帮助我。您的解决方案不起作用,但我仍然非常感谢您的努力。它与上面的解决方案非常相似,只是略有不同。再次感谢您!
      猜你喜欢
      • 1970-01-01
      • 2018-05-10
      • 2016-07-23
      • 2023-01-09
      • 1970-01-01
      • 2019-09-30
      • 2016-03-14
      • 2023-02-04
      • 2019-04-12
      相关资源
      最近更新 更多