我的DataFrame如下所示:
rng = pd.date_range('2020-12-01', periods=5, freq='D')
df = pd.DataFrame({"ID" : ["1", "2", "1", "1", "2"],
"Date" : rng,
"kind" : ["active", "not_active", "active", "active", "not_active"],
"status" : ["b2", "b2", "g8", "g8", "v10"]})我需要创建DataFrame,它将显示上一个活动协议和最后一个非活动协议的状态。下面是我上传结果的例子:

发布于 2020-12-21 20:54:58
如果对datetimes进行排序,则可以使用DataFrame.pivot_table
df = (df.pivot_table(index='ID', columns='kind', values='status', aggfunc='last')
.reset_index()
.rename_axis(None, axis=1))如果不确定是否已排序,则添加DataFrame.sort_values
df = (df.sort_values(['ID','Date'])
.pivot_table(index='ID', columns='kind', values='status', aggfunc='last')
.reset_index()
.rename_axis(None, axis=1))
print (df)
ID active not_active
0 1 g8 NaN
1 2 NaN v10https://stackoverflow.com/questions/65393098
复制相似问题