我想根据其他行更新pandas df行上的值。
我有一个病人的数据框,他们需要接种的所有疫苗,一个列表明他们是否已经接种了疫苗,还有一个“状态”列,如果他们接种了疫苗,就是“OK”,如果他们没有接种,就是“Missing”。
问题是,有一些疫苗是等效的。在下面的实施例中,疫苗B和C是等同的。所以如果病人接种了B疫苗,就不应该接种C疫苗。因此,在这种情况下,疫苗B的正确状态为“OK”,疫苗C的正确状态为“应用的等效疫苗”。
dataframe超过200万行,所以我需要一种有效的方法来构建“desired_status”列。
有什么办法吗?谢谢!
| 病人|疫苗|应用?|地位|期望状态|
| --------------|--------------|--------------|--------------|--------------|
| 1|一个|1|好的|好的|
| 1|B|1|好的|好的|
| 1|C|0|失踪|应用的等效疫苗|
| 二|一个|0|失踪|失踪|
| 二|B|0|失踪|应用的等效疫苗|
| 二|C|1|好的|好的|
| 三|一个|1|好的|好的|
| 三|B|0|失踪|失踪|
| 三|C|0|失踪|失踪|
PS:等效疫苗不一定在相邻的排中。
2条答案
按热度按时间c3frrgcw1#
您可以使用字典来Map等价项,然后使用
groupby
+agg
和numpy.select
:输出:
中间体表,以便于说明
cx6n0qe32#
输出: