通过数据框迭代和比较值

时间:2014-03-27 11:48:16

标签: python pandas

我有一个类似于:

的数据框
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.

有人能帮我这么好吗?

非常感谢!

1 个答案:

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

会为您提供一列TrueFalse。如果您真的更喜欢10,请将最后一行替换为:

df['FLAG'] = np.where(first_condition & second_condition, 1, 0)