我有这样的DataFrame:
month CPT
5/1/2017 aa
5/1/2017 bb
5/1/2017 cc
6/1/2017 aa
6/1/2017 cc
6/1/2017 dd
7/1/2017 aa
7/1/2017 bb
7/1/2017 cc
我想要新的列(old_bill),其中在同一列(CPT)中较早出现列(CPT)的行值之后,我需要列(月)值。预期的数据帧为:
period CPT old_bill
5/1/2017 aa nan
5/1/2017 bb nan
5/1/2017 cc nan
6/1/2017 aa 5/1/2017
6/1/2017 cc 5/1/2017
6/1/2017 dd nan
7/1/2017 aa 6/1/2017
7/1/2017 bb 5/1/2017
7/1/2017 cc 6/1/2017
我尝试使用.isin方法。但是我没有得到可显示的结果。预先非常感谢您。...
答案 0 :(得分:1)
我相信您需要DataFrameGroupBy.shift
-每个组仅需要连续的日期时间:
df['old_bill'] = df.groupby('CPT')['month'].shift()
print (df)
month CPT old_bill
0 5/1/2017 aa NaN
1 5/1/2017 bb NaN
2 5/1/2017 cc NaN
3 6/1/2017 aa 5/1/2017
4 6/1/2017 cc 5/1/2017
5 6/1/2017 dd NaN
6 7/1/2017 aa 6/1/2017
7 7/1/2017 bb 5/1/2017
8 7/1/2017 cc 6/1/2017