我想通过将当前行中的值与前两行中的值进行比较来获取列的最小值,我知道这可以通过使用shift(-1)和shift(-2)创建2列来完成)并返回该行的最小值,但我想知道如果我将范围从前 2 行扩展到 n 行,是否有任何方法可以做得更好。
例如在下面的数据集中
df= pd.DataFrame([12,11,4,15,6,],columns=['score'])
>>> df
score
0 12
1 11
2 4
3 15
4 6
为先前的值创建新列 prv_score_1、prv_score_2
>>> df['prv_score_1'] = df['score'].shift(-1)
>>> df['prv_score_2'] = df['score'].shift(-2)
>>> df
score prv_score_1 prv_score_2
0 12 11.0 4.0
1 11 4.0 15.0
2 4 15.0 6.0
3 15 6.0 NaN
4 6 NaN NaN
创建最小值列并获取该行的最小值
>>> df['Minimum'] = df.min(1)
>>> df
score prv_score_1 prv_score_2 Minimum
0 12 11.0 4.0 4.0
1 11 4.0 15.0 4.0
2 4 15.0 6.0 4.0
3 15 6.0 NaN 6.0
4 6 NaN NaN 6.0
要做得更好吗?
最佳答案
您需要在窗口 3 中滚动分钟,即
df['new'] = df['score'][::-1].rolling(3,min_periods=1).min()[::-1]
score new
0 12.0 4.0
1 11.0 4.0
2 4.0 4.0
3 15.0 6.0
4 6.0 6.0
关于python - 通过比较 Pandas 中前 n 行来获取列的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321437/