Python 在数据框中查找前3天的最低值

Python 在数据框中查找前3天的最低值,python,pandas,Python,Pandas,我对python非常陌生。对不起,如果我的问题很愚蠢 我试图找到时间序列中前3天的最低值 e、 g 我尝试了.shift()、.min()等。它们都不起作用。 非常感谢你的帮助 你可以试试这样的东西 import pandas as pd import numpy as np # your data # =========================== np.random.seed(0) df = pd.DataFrame(100+np.random.randn(100).cumsum(

我对python非常陌生。对不起,如果我的问题很愚蠢

我试图找到时间序列中前3天的最低值

e、 g

我尝试了.shift()、.min()等。它们都不起作用。
非常感谢你的帮助

你可以试试这样的东西

import pandas as pd
import numpy as np

# your data
# ===========================
np.random.seed(0)
df = pd.DataFrame(100+np.random.randn(100).cumsum(), index=pd.date_range('2015-01-01', periods=100, freq='B'), columns=['price'])
df


               price
2015-01-01  101.7641
2015-01-02  102.1642
2015-01-05  103.1429
2015-01-06  105.3838
2015-01-07  107.2514
2015-01-08  106.2741
2015-01-09  107.2242
2015-01-12  107.0729
2015-01-13  106.9696
2015-01-14  107.3802
...              ...
2015-05-07  100.1852
2015-05-08  101.4077
2015-05-11  101.6160
2015-05-12  102.5926
2015-05-13  102.9490
2015-05-14  103.6555
2015-05-15  103.6660
2015-05-18  105.4519
2015-05-19  105.5788
2015-05-20  105.9808

[100 rows x 1 columns]


# processing
# ===========================
pd.concat([df, df.shift(1), df.shift(2)], axis=1).dropna().max(axis=1)

2015-01-05    103.1429
2015-01-06    105.3838
2015-01-07    107.2514
2015-01-08    107.2514
2015-01-09    107.2514
2015-01-12    107.2242
2015-01-13    107.2242
2015-01-14    107.3802
2015-01-15    107.5243
2015-01-16    108.9785
                ...   
2015-05-07    100.5884
2015-05-08    101.4077
2015-05-11    101.6160
2015-05-12    102.5926
2015-05-13    102.9490
2015-05-14    103.6555
2015-05-15    103.6660
2015-05-18    105.4519
2015-05-19    105.5788
2015-05-20    105.9808
Freq: B, dtype: float64
您可以尝试这样做(当然,您可以使用所需的值填充
最后一个日期
列表):


无需手动执行此操作,它已经有一个功能:

pd.rolling_min( df['price'], 3 )

1993-01-29       NaN
1993-02-01       NaN
1993-02-02    43.750
1993-02-03    42.375
1993-02-04    42.375
一般来说,有许多滚动式函数用于处理常见情况,用户函数有一个
rolling\u apply
。许多库/包都有这些函数,您通常可以通过搜索“移动”或“滚动”来找到这些函数


太棒了!快速回答,感谢您修复我问题中的数据格式。(在我修复它之前:))
import datetime

indexes = [datetime.datetime(2015,1,1), datetime.datetime(2015,1,2), datetime.datetime(2015,1,3), datetime.datetime(2015,1,4)]

df = pd.DataFrame(data={'price' : [12,4,124,555]},index=indexes)

>>               price
>>  2015-01-01     12
>>  2015-01-02      4
>>  2015-01-03    124
>>  2015-01-04    555

last_x_dates = [datetime.datetime(2015,1,3), datetime.datetime(2015,1,4)]

df = df[df.index.isin(last_x_dates)]
print min(df['price'])

>> 124
pd.rolling_min( df['price'], 3 )

1993-01-29       NaN
1993-02-01       NaN
1993-02-02    43.750
1993-02-03    42.375
1993-02-04    42.375