【问题标题】:merge rows based on values in a column [duplicate]根据列中的值合并行[重复]
【发布时间】:2019-02-14 21:23:07
【问题描述】:

我有一个看起来像这样的数据框:

    Row-Labels   300    301
0   BLR          1
1   BLR          2      2
2   NSL         
3   RFR          3
4   TNC          22

我想得到的是这样的:

    Row-Labels   300    301
0   BLR          3      2
1   NSL        
2   RFR          3
3   TNC          22

也就是说,我想将所有行合并为一个行标签列值相同的行。这种合并应该使得结果行中的列应该对行标签值“BLR”的列 A 中的所有值求和,如果不需要求和,则将其他值放在该行的该列中。

到目前为止我所做的是这样的:

for i in range(300, 301):
    temp_final_df.append(final_df.groupby(['Row-Labels'])['{}'.format(i)].apply(sum).reset_index())

但它的输出不正确。简而言之,我想合并行,使 Row_labels 列值变得唯一。关于如何实现这一目标的任何其他想法?

【问题讨论】:

    标签: python-2.7 pandas pandas-groupby


    【解决方案1】:

    使用:

    df.groupby('Row-Labels').sum().replace(0,np.nan)
    

    如果你不想要 np.nan 而只是空白值:

    df.groupby('Row-Labels').sum().replace(0,'')
    

    编辑:

    df.groupby('Row-Labels').sum().replace(0,'').reset_index()
    

    输出:

        Row-Labels   300     301
    0   BLR          3       2 
    1   NSL   
    2   RFR          3  
    3   TNC          22 
    

    【讨论】:

    • 这会将“行标签”组合在一起,但列中的值是空的。意思是,“行标签”列的行值是我想要的,但第 300 和 301 列是空的
    • @rootkit :我也添加了输出。请检查它是否有帮助。谢谢
    猜你喜欢
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多