取得输出并将其合并回到新的数据框作为新列

时间:2019-02-05 18:43:46

标签: python pandas dataframe

我有两个数据框df1和df2,它们是从有关某些患者信息的相同数据集中构建的。

df1包含有关患者在同一类型的各种IV上停留了多长时间的信息,因此对于同一患者,可能会有多行,每行构成不同的IV。

在df2中,每一行都是一名不同的患者,各列显示该患者接受某种类型IV的总天数。

我们关注的列是“ FIN”和“ Line Days”。 “ FIN”唯一地标识了患者,“ Line Days”记录了特定IV进入了多少天。

在df1中,我按“ FIN”对行进行了分组,然后将每个不同的“ FIN”的“ Line Days”列加起来。现在,我想获取此groupby.agg()的输出,并通过匹配'FIN'将其添加为df2的新列。

.btn-primary {
   color: $primary;
}

输出看起来像这样:(注意:未显示实际的FIN)

def sum_col(df, col1, col2):
    tot_line = df.groupby(col1)[col2].agg('sum')
    return tot_line

CVL_totals = sum_col(CVL_data, 'FIN', '# Line days')

现在,我想将其合并到'FIN'上的df2上,但是由于输出不是数据帧,所以我不能这样做。

1 个答案:

答案 0 :(得分:3)

cvl_totals应该是一个Series对象,您可以使用to_frame() method变成一个DataFrame,然后将其合并到df2。

但是,似乎您正在对列进行分组,因此,如果要在行中扩展值(即,所有具有一个FIN的列将具有相同的cvl_total),则可以按照以下说明进行操作此处:Conditionally fill column values based on another columns value in pandas