gpt4 book ai didi

python - 为每组连续增加的日期添加行号列

转载 作者:行者123 更新时间:2023-12-01 08:30:17 27 4
gpt4 key购买 nike

我有 DataFrame,其中包含包含日期的列和包含一些值的其他列,比方说,前 100 行根据日期按顺序排列,从 101 到 200 又是相同的日期,只有不同的值,依此类推。我想添加一列,对从 1 到 100 的行进行计数,并在日期重复时从 1 重新开始。示例

Date       | Value | RowNum
2000-01-01 | 2 | 1
2000-02-01 | 10 | 2
.
.
.
2003-12-01 | 11 | 100
2000-01-01 | 32 | 1
2000-02-01 | 14 | 2
.
.
.
2003-12-01 | 4 | 100

我需要这个来透视这个表,其中列是日期,值是值,RowNum 将是索引。谢谢您的帮助。

最佳答案

如果完全相同的日期重复出现,您的问题就变成一个非常简单的cumsumcumcount问题:

m = df.Date.eq(df.at[df.index[0], 'Date']).cumsum()
df['RowNum'] = df.groupby(m).cumcount() + 1
<小时/>

如果没有,您可以检查差异:

df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
m = df['Date'].diff().dt.total_seconds().fillna(-1).lt(0).cumsum()
df['RowNum'] = df.groupby(m).cumcount() + 1

或者,类似地,通过将​​底层 NumPy 数组转换为 float ,然后比较:

s = pd.Series(df['Date'].values.astype(float), index=df.index)
df['RowNum'] = df.groupby(s.fillna(-1).lt(0).cumsum()).cumcount() + 1

关于python - 为每组连续增加的日期添加行号列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53935128/

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