gpt4 book ai didi

python - Pandas - 按日期识别最后一行

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:23 24 4
gpt4 key购买 nike

我试图在我的 Pandas 数据框中完成两件事:

  1. 根据新的完成日期创建新列最后一行("is"或“否”)
  2. 捕获当前行的下一个事务,除非它是一个新的 DateCompleted(在这种情况下标记为 Null)。

原始数据集

        DateCompleted      TranNumber  Sales

0 1/1/17 10:15AM 3133 130.31
1 1/1/17 11:21AM 3531 103.12
2 1/1/17 12:31PM 3652 99.23
3 1/2/17 9:31AM 3689 83.22
4 1/2/17 10:31AM 3701 29.93
5 1/3/17 8:30AM 3709 31.31

期望的输出

        DateCompleted      TranNumber   Sales    NextTranSales  LastRow

0 1/1/17 10:15AM 3133 130.31 103.12 No
1 1/1/17 11:21AM 3531 103.12 99.23 No
2 1/1/17 12:31PM 3652 99.23 NaN Yes
3 1/2/17 9:31AM 3689 83.22 29.93 No
4 1/2/17 10:31AM 3701 29.93 NaN Yes
5 1/3/17 8:30AM 3709 31.31 ... No

我可以获得 NextTranSales 基于:

 df['NextTranSales'] = df.Sales.shift(-1)

但我无法确定 DateCompleted 组中的最后一行并将 NextTranSales 标记为 Null(如果它是最后一行)。

感谢您的帮助!

最佳答案

如果您的数据框已按 DateCompleted 列排序,那么您可能只需要 groupby.shift:

date = pd.to_datetime(df.DateCompleted).dt.date    
df["NextTranSales"] = df.groupby(date).Sales.shift(-1)

enter image description here

如果您需要LastRow 列,您可以使用groupby 找出最后一行索引,然后将yes 分配给这些行:

last_row_index = df.groupby(date, as_index=False).apply(lambda g: g.index[-1])
df["LastRow"] = "No"
df.loc[last_row_index, "LastRow"] = "Yes"
df

enter image description here

关于python - Pandas - 按日期识别最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com