Python-Pandas-创建一列有效的\u,直到基于列上更新的\u为止

Python-Pandas-创建一列有效的\u,直到基于列上更新的\u为止,python,pandas,Python,Pandas,我有一个数据,它有一个索引,个人id,更新列。我想根据列中的updated\u导出一个新的数据框,该数据框将具有,可用和有效。基本上,person\u id可以重复,并且只有每个person\u id的最后更新行将有效设为空 原始数据: 期望输出: 你知道我该怎么做吗 id=[1,2,1,1] 更新地址:['2019年12月31日'、'2019年12月30日'、'2020年1月15日'、'2020年1月20日'] dict={'id':id,'updated_at':updated_at}

我有一个数据,它有一个
索引
个人id
更新列。我想根据
列中的updated\u导出一个新的数据框,该数据框将具有,
可用
有效
。基本上,
person\u id
可以重复,并且只有每个
person\u id
的最后更新行将
有效
设为空

原始数据:

期望输出:

你知道我该怎么做吗

id=[1,2,1,1] 更新地址:['2019年12月31日'、'2019年12月30日'、'2020年1月15日'、'2020年1月20日']

dict={'id':id,'updated_at':updated_at}

df=pd.DataFrame(dict)

这应该可以做到(尽管-请不要调用您的列
索引
-这会使事情复杂化):

df[“updated_at”]=pd.to_datetime(df[“updated_at”])
df2=df.reset_index().merge(df.reset_index(),on=“person_id”,后缀=[“_x”,“_y”])
df2[“匹配”]=np.logical_和(df2[“index_x”].lt(df2[“index_y”]),df2[“updated_at_x”].lt(df2[“updated_at_y”]))
df[“有效期至”]=df2.loc[df2[“匹配”]].groupby(“索引x”)[“在y更新]。first()
产出:

person\u id已更新为有效的\u,直到
0          1 2019-12-31  2020-01-15
1 2019-12-30 NaT
2          1 2020-01-15  2020-01-20
3 1 2020-01-20 NaT
输入数据

df=pd.DataFrame({“个人id”:[1,2,1,1],“更新日期”:“2019年12月31日12/30/2019年01/15/2020年01/20/2020”。拆分(“”)

欢迎来到StackOverflow。请展示你的研究成果,即你所做的尝试。我们无法为您编写代码,但如果我们看到您的代码和出错的地方,我们会更愿意提供帮助。我们有很多想法,但首先您需要遵循一些建议:,并避免。此外,除了rajah9的评论外,请将这些示例表作为代码发布,以便我们可以轻松地将其复制粘贴到Python环境中。没有人想花30分钟在控制台上输入数据…除非绝对必要,否则请不要将信息作为图像共享。“我该怎么做”不是一个有效的问题,你有实际问题吗?见:。