Pandas和Python数据帧以及条件转换函数

Stu*_*nce 2 python data-analysis pandas

数据框中是否存在条件"移位"参数?

例如,

假设我拥有一辆二手车,我的数据如下

SaleDate    Car
12/1/2016   Wrangler
12/2/2016   Camry
12/3/2016   Wrangler
12/7/2016   Prius
12/10/2016  Prius
12/12/2016  Wrangler
Run Code Online (Sandbox Code Playgroud)

我想从这个列表中找到两件事 -

1)对于每次销售,汽车售出的最后一天是什么时候?这在Pandas中很简单,只是一个简单的转变如下

df['PriorSaleDate'] = df['SaleDate'].shift()
Run Code Online (Sandbox Code Playgroud)

2)对于每次销售,同一类型汽车的销售日期是什么时候?因此,例如,12/3处的牧马人销售将指向两行返回到12/1(最后一次第3行中的"汽车"值等于前一行中的"汽车"值).

对于12/12年出售的牧马人,我希望价值12/3

是否有一个条件移位参数,允许我在那里得到行df ['Car']等于该行中df ['Car']的值?

非常感谢你的帮助

HYR*_*YRY 9

你可以使用groupbyshift():

import io
import pandas as pd

text = """SaleDate    Car
12/1/2016   Wrangler
12/2/2016   Camry
12/3/2016   Wrangler
12/7/2016   Prius
12/10/2016  Prius
12/12/2016  Wrangler"""

df = pd.read_csv(io.StringIO(text), delim_whitespace=True, parse_dates=[0])
df["lastSaleDate"] = df.groupby("Car").SaleDate.shift()
Run Code Online (Sandbox Code Playgroud)

输出:

    SaleDate       Car lastSaleDate
0 2016-12-01  Wrangler          NaT
1 2016-12-02     Camry          NaT
2 2016-12-03  Wrangler   2016-12-01
3 2016-12-07     Prius          NaT
4 2016-12-10     Prius   2016-12-07
5 2016-12-12  Wrangler   2016-12-03
Run Code Online (Sandbox Code Playgroud)