如果我的行值在另一行的同一列(column1)中,如何查找另一列(column2)的行值

时间:2019-04-26 07:59:12

标签: pandas loc

我有这样的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方法。但是我没有得到可显示的结果。预先非常感谢您。...

1 个答案:

答案 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