如何在Python中仅使用同时存在于两天的ID来计算t和t-1的值差异?

1 投票
1 回答
37 浏览
提问于 2025-04-14 16:45

我应该怎么写Python代码来计算t和t-1之间的值差异,前提是t中的id在t-1中也存在?换句话说,如果某个id在t-1中存在但在t中消失了,就不算在计算里,也不出现在输出的数据表中。谢谢!

举个例子:

日期 id
2024年1月1日 a 100
2024年1月2日 a 101
2024年1月1日 b 99
2024年1月5日 b 97
2024年1月6日 b 98
2024年1月2日 c 98
2024年1月5日 c 97
2024年1月5日 a 97

期望的输出:

日期 id 差异
2024年1月1日 a 100
2024年1月2日 a 101 1
2024年1月5日 b 97
2024年1月6日 b 98 1

1 个回答

0

试试这个:

df["Date"] = pd.to_datetime(df["Date"])

df = df.sort_values(by="Date")

df = (
    df.groupby("id")
    .apply(
        lambda x: x[(mask := x["Date"].diff().eq("1 day")) | mask.shift(-1)],
        include_groups=False,
    )
    .droplevel(1)
    .reset_index()
)

df["Delta"] = df.groupby("id")["Value"].diff()

print(df)

输出结果是:

  id       Date  Value  Delta
0  a 2024-01-01    100    NaN
1  a 2024-01-02    101    1.0
2  b 2024-01-05     97    NaN
3  b 2024-01-06     98    1.0

撰写回答