【问题标题】:Combining rows in pandas DataFrame by iterating通过迭代组合 pandas DataFrame 中的行
【发布时间】:2018-03-23 12:39:15
【问题描述】:

如何从以下 DataFrame 中获得预期的结果

 df
            col_1             col_2    col_3
     0  Non-Saved    www.google.com   20,567
     1             www.facebook.com      
     2             www.linkedin.com      
     3      Saved     www.Quora.com    6,337
     4                www.gmail.com      

预期结果:

            col_1              col_2    col_3
     0  Non-Saved     www.google.com   20,567
                    www.facebook.com
                    www.linkedin.com
     1  Saved          www.Quora.com    6,337
                       www.gmail.com   

通过合并 col_1 和 col_3 中的空字符串,从 5 行变为 2 行。此外,将 col_2 中的值连接到一个单元格中。谁能帮我用一个用户定义的函数来做到这一点?

【问题讨论】:

    标签: python pandas loops dataframe


    【解决方案1】:

    我们试试吧:

    df = df.apply(lambda x: x.str.strip()).replace('',np.nan)
    
    df.groupby(df.col_1.ffill())\
      .agg({'col_2': lambda x: ' '.join(x) ,'col_3':'first'})\
      .reset_index()
    

    输出:

           col_1                                             col_2   col_3
    0  Non-Saved  www.google.com www.facebook.com www.linkedin.com  20,567
    1      Saved                       www.Quora.com www.gmail.com   6,337
    

    【讨论】:

    • df = df.apply(lambda x: x.str.strip()).replace('',np.nan) 给出错误:AttributeError: ('Can only use .str accessor with string values, which use np.object_ dtype in pandas', u'occurred at index NumberOfRequests')
    • 是的,但是看到这个SO Post
    • 你可以试试'\n'.join(x)
    • col_1 object col_2 object col_3 int64 dtype: object
    • 我这里有一点棘手的情况 -> Combine_rows...。你介意看一次吗。同时我也在努力。
    猜你喜欢
    • 2013-09-02
    • 2021-11-26
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 2018-11-09
    相关资源
    最近更新 更多