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

时间:2018-12-26 17:24:44

标签: python python-3.x pandas dataframe

我有一个DataFrame,它的Date列和其他一些列都具有一些值,比如说,前100行是根据日期排列的,从101到200行又是相同的Date,只有不同的值,依此类推。我想添加一列,该行计数从1到100的行,并在日期重复时从1重新开始。 例子

SELECT * FROM occupied_room_dates
WHERE (date_a<="2019-02-03" AND date_b>="2019-02-03")
    OR (date_a<="2019-05-03" AND date_b>="2019-05-03")
    OR (date_a>="2019-02-03" AND date_b<="2019-05-03")
    OR (date_a<="2019-02-03" AND date_b>="2019-05-03")

我需要此数据透视表,其中列是日期,值是值,而RowNum是索引。 谢谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果重复相同的日期,则您的问题将变成非常简单的control = new FormControl(1, [ Validators.max(100), ({value}) => value % 1 ? {float: true} : null ]); cumsum问题:

cumcount

如果没有,您可以检查m = df.Date.eq(df.at[df.index[0], 'Date']).cumsum() df['RowNum'] = df.groupby(m).cumcount() + 1

diff

或者类似地,通过将​​基础的NumPy数组转换为float然后进行比较:

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

答案 1 :(得分:0)

说明

创建一个新列并遍历数据框,只需使用索引列的%100。如果您确实有100个与上述相同的日期,这将很好用。

代码

df[RowNum] = 1
for i, row in df.iterrows():
    RowNum_val = i%100
    df.set_value(i,'RowNum',RowNum_val)

资源

https://www.geeksforgeeks.org/python-pandas-dataframe-set_value/ https://www.tutorialspoint.com/python_pandas/python_pandas_iteration.htm