pandas 相当于Stata崩溃的lastnm
pandas equivalent of 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默认保留最后一个非缺失值,所以问题解决了。
您可以只使用 groupby,pandas 将忽略缺失值。以下将为您提供所需的结果:
df.groupby(["group", "period"], as_index=False).last()
给出:
group period value1 value2
0 1 1 2.0 3.0
1 1 2 8.0 8.0
2 2 1 5.0 5.0
3 2 2 6.0 6.0
我正在尝试在 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默认保留最后一个非缺失值,所以问题解决了。
您可以只使用 groupby,pandas 将忽略缺失值。以下将为您提供所需的结果:
df.groupby(["group", "period"], as_index=False).last()
给出:
group period value1 value2
0 1 1 2.0 3.0
1 1 2 8.0 8.0
2 2 1 5.0 5.0
3 2 2 6.0 6.0