首页 > 解决方案 > 熊猫数据框:根据其他列中的条件更改列中的值

问题描述

我在熊猫数据框中有一个大型面板数据。示例数据可以在这里找到:

import pandas as pd 

df = pd.read_csv('example_data.csv')

df.head()

ID  Year    y   DOB Year_of_death   event
223725  1991    6   1975.0  2021    No
223725  1992    6   1975.0  2021    No
223725  1993    6   1975.0  2021    No
223725  1994    6   1975.0  2021    No
223725  1995    6   1975.0  2021    No

我想更改列中的值,event以便如果该 Year值对应于该值,则该特定行Year_of_death的观察值或更改为,否则保持为。eventIDYesNo

例如,ID68084329 在 2012 年死亡,但Yes在列中的每个观察值中都有值event。我想更改它,以便只有Year2012IDYes行在event. 其他event值应保持为No

df.loc[df['ID'] == '68084329']

ID         Year    y    DOB  Year_of_death  event
68084329    1991    6   1942.0  2012    Yes
68084329    1992    5   1942.0  2012    Yes
68084329    1993    5   1942.0  2012    Yes
68084329    1994    6   1942.0  2012    Yes
68084329    1995    6   1942.0  2012    Yes
68084329    1996    5   1942.0  2012    Yes
68084329    1997    6   1942.0  2012    Yes
68084329    1998    5   1942.0  2012    Yes
68084329    1999    6   1942.0  2012    Yes
68084329    2000    6   1942.0  2012    Yes
68084329    2001    6   1942.0  2012    Yes
68084329    2002    5   1942.0  2012    Yes
68084329    2003    6   1942.0  2012    Yes
68084329    2004    5   1942.0  2012    Yes
68084329    2005    5   1942.0  2012    Yes
68084329    2006    6   1942.0  2012    Yes
68084329    2007    6   1942.0  2012    Yes
68084329    2008    6   1942.0  2012    Yes
68084329    2010    5   1942.0  2012    Yes
68084329    2011    5   1942.0  2012    Yes
68084329    2012    0   1942.0  2012    Yes

如何根据上述条件对具有多个 ID 的大型 DataFrame 进行这些更改?

标签: pythonpandasdataframe

解决方案


df.loc[df[Year'] == df['Year of Death'], 'Event'] = 'Yes'

这在我正在编写的一段类似的代码中起作用。


推荐阅读