Python dataframe 添加一列选择上一个日期的数据

标签 python sql pandas numpy

我想在我当前的数据框中添加一个名为 prev_temp 的列。 Prev_temp 按位置分组,并根据其位置的温度获取前一个日期。

location   date              temp
NY         2014-02-01        60
NY         2014-02-02        40
LA         2014-01-28        70
LA         2014-02-02        80

这里是我需要输出的示例:

location   date              temp    prev_temp
NY         2014-02-01        60      null
NY         2014-02-02        40      60
LA         2014-01-28        70      null
LA         2014-02-02        80      70

在SQL中条件是

lag(temp, 1) over (partition by location order by date) prev_temp

但是我需要在 python 中做到这一点,所以非常感谢任何帮助!

最终目标是将 temp 列中的值与 prev_temp 列中的值进行比较。

示例条件是删除 prev_temp 相对于 temp 降低的所有行。

最佳答案

我们可以使用shift with groupby在 Pandas 中。

import pandas as pd
import io

txt = io.String('''location   date              temp
                   NY         2014-02-01        60
                   NY         2014-02-02        40
                   LA         2014-01-28        70
                   LA         2014-02-02        80''')

df = pd.read_csv(txt, sep='\s+')
df['prev_temp'] = df.groupby('location')['temp'].shift(1)

关于Python dataframe 添加一列选择上一个日期的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42517545/

相关文章:

C# - 更新 SQL 表

SQL - 检索指定记录日期时间字段两侧 X 秒内出现的所有记录

python - 删除 Pandas 中所有只有 1 值的变量

python - 如何在两个数据框中查找匹配项

python - ValueError : No such renderer factory . mak - Python Pyramid 错误

mysql - sql语句中列的顺序会影响查询速度吗?

python - 将列表附加到单个 pandas 数据框单元格中

python - 替换数据框的多个特定列中的值

python - 如何将 Excel 文件编码为 base64

python - 用字符串分隔城市和州?