在pandas中实现Stata collapse (lastnm)功能的方法
在pandas中实现Stata
collapse (lastnm) 等效效果 我正在尝试在pandas中复刻Stata的collapse (lastnm)函数效果,现有最小示例数据如下:
import pandas as pd, numpy as np df = (pd.DataFrame({"group": [1,1,1,1,1,2,2,2,2,2], "period":[1,1,2,2,2,1,1,2,2,2], "value1": [2,np.NaN,7,8,np.NaN,1,5,4,6,np.NaN], "value2": [1,3,np.NaN, 8,np.NaN,1,5,4,6,np.NaN]}))
期望得到的输出结果如下:
collapsed_df = (pd.DataFrame({"group":[1,1,2,2], "period":[1,2,1,2], "value1":[2,8,5,6], "value2":[3,8,5,6]}))
我初步尝试的写法如下:
collapsed_df = df.groupby(["group", "period"])["value1","value2"].last()
我原本担心如果分组内最后一个值为缺失值,该方法会返回缺失值,我想要的是取分组内最后一个非缺失值的效果,类似如下调用形式:
collapsed_df = df.groupby(["group", "period"])["value1","value2"].lastnm()
问题解决说明
后续测试确认,pandas的last()方法默认就会跳过缺失值,返回分组内的最后一个非缺失值,完全符合Stata collapse (lastnm)的功能效果,该问题已解决。
内容的提问来源于stack exchange,提问作者safex
相关产品推荐
相关产品推荐

