我有一个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是索引。 谢谢您的帮助。
答案 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