未来最小 pandas 数据框
Future minimum pandas dataframe
我在 Pandas DataFrame 中有一个时间序列,我想为其添加一个具有(未来)最小值的新列。具体来说,假设我的时间序列中有以下值:
VAL
1
0
4
3
2
3
4
我想找到最小值 "looking forward"。例如,前 2 个值的最小值是 0,接下来的三个值是 2(不再考虑 0,因为即使它是整体最小值,它已经过去了),然后是 3,最后是 4。
VAL MIN
1 0
0 0
4 2
3 2
2 2
3 3
4 4
关于如何使用 Pandas 或 Numpy 高效地执行此操作的任何想法?谢谢!
翻转,使用np.minimum.accumulate
,翻转回来-
In [252]: df['MIN'] = np.minimum.accumulate(df['VAL'][::-1])[::-1]
In [253]: df
Out[253]:
VAL MIN
0 1 0
1 0 0
2 4 2
3 3 2
4 2 2
5 3 3
6 4 4
使用cummin
df['MIN'] = df.VAL[::-1].cummin()[::-1]
VAL MIN
0 1 0
1 0 0
2 4 2
3 3 2
4 2 2
5 3 3
6 4 4
我们可以使用 expanding
和 min
df['New']=df.VAL.iloc[::-1].expanding(min_periods=1).min()
我在 Pandas DataFrame 中有一个时间序列,我想为其添加一个具有(未来)最小值的新列。具体来说,假设我的时间序列中有以下值:
VAL
1
0
4
3
2
3
4
我想找到最小值 "looking forward"。例如,前 2 个值的最小值是 0,接下来的三个值是 2(不再考虑 0,因为即使它是整体最小值,它已经过去了),然后是 3,最后是 4。
VAL MIN
1 0
0 0
4 2
3 2
2 2
3 3
4 4
关于如何使用 Pandas 或 Numpy 高效地执行此操作的任何想法?谢谢!
翻转,使用np.minimum.accumulate
,翻转回来-
In [252]: df['MIN'] = np.minimum.accumulate(df['VAL'][::-1])[::-1]
In [253]: df
Out[253]:
VAL MIN
0 1 0
1 0 0
2 4 2
3 3 2
4 2 2
5 3 3
6 4 4
使用cummin
df['MIN'] = df.VAL[::-1].cummin()[::-1]
VAL MIN
0 1 0
1 0 0
2 4 2
3 3 2
4 2 2
5 3 3
6 4 4
我们可以使用 expanding
和 min
df['New']=df.VAL.iloc[::-1].expanding(min_periods=1).min()