熊猫通过保留一列的第一个元素和另一列的最后一个元素来合并

时间:2020-01-07 15:05:55

标签: python pandas

我有一个具有不同值和ID的数据框,这些数据框可能是相同的。

    df = pd.DataFrame({'A': ['chr1','chr1','chr1','chr1','chr1','chr2'],
                    'B': [700,750,800,850,900,200],
                    'C': [750,800,850,900,950,250],
                    'D':['id_1','id_1','id_1','id_1','id_1','id_2']})

我想做的是对于相同的值A和D,保持B的最低元素,C的更高元素

输出应如下所示:

    A    B    C    D
0  chr1 700  950   id_1
1  chr2 200  250   id_2

我尝试使用

groupby('D').agg(['first', 'last'])

但这不是我想要的...

2 个答案:

答案 0 :(得分:4)

GroupBy.agg与字典结合使用,按列名称和聚合函数:

df1 = (df.groupby('D', as_index=False)
         .agg({'A':'first', 'B':'first', 'C':'last'})
         [['A','B','C','D']])
print (df1)
      A    B    C     D
0  chr1  700  950  id_1
1  chr2  200  250  id_2

答案 1 :(得分:1)

通过dictagg内部传递了名称和功能

df.groupby(['A','D'],as_index=False).agg({'B':'first','C':'last'}).reindex(columns=df.columns)
      A    B    C     D
0  chr1  700  950  id_1
1  chr2  200  250  id_2