根据前一天的值计算参数
Calculating a parameter based on values from the previous day
我有一个 DataFrame,它是 Python 上更广泛的脚本的一部分,具有以下特征:
- 索引
dtype='datetime64[ns]', length=365, freq='D'
- 不同参数的每日值
- DOY 1 的默认值
- 我之前为某些特定日期计算的一对值。
到目前为止,数据帧结构是这样的:
col1 col2 col3 col4 Condition value to calculate
2018-01-01 5.0 0.853232 0.992774 0.65377 0.0 0.65429
2018-01-02 0.4 0.004652 0.992774 0.65377 0.0 NaN
2018-01-03 0.0 0.000000 0.992774 0.65377 0.0 NaN
2018-01-04 0.0 0.000000 0.992774 0.65377 1.0 0.33456
2018-01-05 0.4 0.004652 0.992774 0.65377 0.0 NaN
... ... ... ... ... ...
'condition' 列用于归因最后一列中特定时间的值
最后一列中的缺失值应使用第 1 至第 4 列的数据进行计算,使用第 1 至第 4 列中先前 DOY 的值以及必须计算的值的同一列。
此外,如果某个值已存在于特定的 DOY,则公式应重置为使用之前添加的值开始计算。
我不确定如何将其置于循环中以执行操作,或者是否有其他替代方法来解决我正在处理的这部分代码。
您似乎需要这样的东西:
def compute_value(previous_row, 行):
for index, row in df.iterrows():
if index>0:
previous_row = df.iloc[index-1]
row['value to calculate'] = previous_row['col1'] * previous_row['col2'] - previous_row['col3'] * previous_row['col4']
这是你迭代的方式,但不确定是否完全理解了条件,也不确定你的意思,如果我可以扩展,请告诉我
Also, in case a value is already present at a specific DOY, the formula should reset to start calculation using the previously added value.
我有一个 DataFrame,它是 Python 上更广泛的脚本的一部分,具有以下特征:
- 索引
dtype='datetime64[ns]', length=365, freq='D'
- 不同参数的每日值
- DOY 1 的默认值
- 我之前为某些特定日期计算的一对值。
到目前为止,数据帧结构是这样的:
col1 col2 col3 col4 Condition value to calculate
2018-01-01 5.0 0.853232 0.992774 0.65377 0.0 0.65429
2018-01-02 0.4 0.004652 0.992774 0.65377 0.0 NaN
2018-01-03 0.0 0.000000 0.992774 0.65377 0.0 NaN
2018-01-04 0.0 0.000000 0.992774 0.65377 1.0 0.33456
2018-01-05 0.4 0.004652 0.992774 0.65377 0.0 NaN
... ... ... ... ... ...
'condition' 列用于归因最后一列中特定时间的值
最后一列中的缺失值应使用第 1 至第 4 列的数据进行计算,使用第 1 至第 4 列中先前 DOY 的值以及必须计算的值的同一列。
此外,如果某个值已存在于特定的 DOY,则公式应重置为使用之前添加的值开始计算。
我不确定如何将其置于循环中以执行操作,或者是否有其他替代方法来解决我正在处理的这部分代码。
您似乎需要这样的东西: def compute_value(previous_row, 行):
for index, row in df.iterrows():
if index>0:
previous_row = df.iloc[index-1]
row['value to calculate'] = previous_row['col1'] * previous_row['col2'] - previous_row['col3'] * previous_row['col4']
这是你迭代的方式,但不确定是否完全理解了条件,也不确定你的意思,如果我可以扩展,请告诉我
Also, in case a value is already present at a specific DOY, the formula should reset to start calculation using the previously added value.