我有一个类似于:
的数据框coperal EXEC_FULLNAME GVKEY YEAR
5623 David P. Storch 1004 1992
5623 David P. Storch 1004 1993
5623 David P. Storch 1004 1994
5623 David P. Storch 1004 1995
5623 David P. Storch 1004 1996
5623 David P. Storch 1004 1997
5623 David P. Storch 1004 1998
5623 David P. Storch 1004 1999
5623 David P. Storch 1004 2000
5623 David P. Storch 1004 2001
我试图找到GVKEY与前一行相同的元素,但EXEC_FULLNAME与前一行不同。我可能会添加一个新列名称FLAG,如果找到它,那么该行的FLAG值为1,否则则FLAG值为0.
有人能帮我这么好吗?
非常感谢!
答案 0 :(得分:1)
您可以使用shift
向上或向下轻推数据。因此,df.shift
在第一行中会有一个NaN
,然后会让你的数据轻推一行。
因此,如果原始框架为df
:
first_condition = df['GVKEY'] == df['GVKEY'].shift()
second_condition = df['EXEC_FULLNAME'] != df['EXEC_FULLNAME'].shift()
df['FLAG'] = first_condition & second_condition
会为您提供一列True
和False
。如果您真的更喜欢1
和0
,请将最后一行替换为:
df['FLAG'] = np.where(first_condition & second_condition, 1, 0)