python - 通过比较 Pandas 中前 n 行来获取列的最小值

标签 python pandas

我想通过将当前行中的值与前两行中的值进行比较来获取列的最小值,我知道这可以通过使用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/

相关文章:

python - 可以在管道处理期间从 spaCy 文档中删除 token 吗?

python - to_CSV 将 np.array 保存为字符串而不是列表

python - 为每个用户提供自己的数据库

Python/Pandas - 如何根据单元格值为每一行分配值

python - 计算pandas中事件之间的时间差

python - 使用差异对列进行分组并按 Pandas 中的另一列对一列进行排序

python - 如何将文件夹中的不同 csv 文件合并为单个 csv 文件?

python - 如何绘制从特定开始日期开始的时间序列?

python - 模拟基类的方法

python - Pandas : Replace NaNs with mean of 'n' nearest non-empty values in column