我有两个数据框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上,但是由于输出不是数据帧,所以我不能这样做。
答案 0 :(得分:3)
cvl_totals
应该是一个Series对象,您可以使用to_frame()
method变成一个DataFrame,然后将其合并到df2。
但是,似乎您正在对列进行分组,因此,如果要在行中扩展值(即,所有具有一个FIN的列将具有相同的cvl_total
),则可以按照以下说明进行操作此处:Conditionally fill column values based on another columns value in pandas