【问题标题】:Python dataframe add a column that selects prev date's dataPython数据框添加一个选择上一个日期数据的列
【发布时间】:2017-07-19 22:38:07
【问题描述】:

我希望在我当前的数据框中添加一个名为 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 降低的所有行。

【问题讨论】:

    标签: python sql pandas numpy


    【解决方案1】:

    我们可以在 pandas 中使用shift with groupby

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      • 2020-03-18
      相关资源
      最近更新 更多