python - 直到行 Pandas 的最小值

标签 python pandas numpy

我在数据按日期排序时遇到了一些问题,例如:

date,       value,      min
2015-08-17,    3,        nan
2015-08-18,    2,        nan
2015-08-19,    4,        nan
2015-08-28,    1,        nan
2015-08-29,    5,        nan

现在我想将 min 列中的 min 值保存到这一行,所以结果看起来像这样:

date,       value,      min
2015-08-17,    3,        3
2015-08-18,    2,        2
2015-08-19,    4,        2
2015-08-28,    1,        1
2015-08-29,    5,        1

我已经尝试了一些选项,但仍然不明白我做错了什么,这是我尝试过的一个例子:

data['min'] = min(data['value'], data['min'].shift())

我不想遍历所有行,因为我拥有的数据很大。对于此类问题,您可以使用 pandas 编写的最佳策略是什么?

最佳答案

既然你提到你正在处理大数据集,并且关注性能,那么这里有一个使用 NumPy 的 np.minimum.accumulate -

df['min'] = np.minimum.accumulate(df.value)

sample 运行-

In [70]: df
Out[70]: 
         date  value  min
0  2015-08-17      3  NaN
1  2015-08-18      2  NaN
2  2015-08-19      4  NaN
3  2015-08-28      1  NaN
4  2015-08-29      5  NaN

In [71]: df['min'] = np.minimum.accumulate(df.value)

In [72]: df
Out[72]: 
         date  value  min
0  2015-08-17      3    3
1  2015-08-18      2    2
2  2015-08-19      4    2
3  2015-08-28      1    1
4  2015-08-29      5    1

运行时测试-

In [65]: df = pd.DataFrame(np.random.randint(0,100,(1000000)), columns=list(['value']))

# @MaxU's soln using pandas cummin
In [66]: %timeit df['min'] = df.value.cummin()
100 loops, best of 3: 6.84 ms per loop

In [67]: df = pd.DataFrame(np.random.randint(0,100,(1000000)), columns=list(['value']))

# Using NumPy
In [68]: %timeit df['min'] = np.minimum.accumulate(df.value)
100 loops, best of 3: 3.97 ms per loop

关于python - 直到行 Pandas 的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43587093/

相关文章:

python - Selenium headless browser webdriver [Errno 104] Connection reset by peer

python - 获取深度自动编码器的解码器

django - 在 django 模板中显示 django-pandas 数据框

python - 带有 MultiIndex Pandas DataFrame 列表的嵌套字典

python - SciPy interp2d(linear) 结果不同于 MatLab interp2(linear)

python - 从头开始Python中的K表示

python - 将字符串转换为日期时间时出现 ValueError

python - 多键字典初始化的代码更少

python - 处理 Pandas 中的稀疏类别 - 用 "Other"替换所有不在顶级类别中的内容

python - Pandas 数据框的自定义函数中的 Forex_python