我想在我当前的数据框中添加一个名为 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/