我试图一次遍历两行数据帧,检查两行中的列值是否相同,并删除这些行。我的数据帧跟踪不同的人在不同遭遇中的位置。你知道吗
我有一个名为transfers
的数据帧,其中每一行由一个人的ID号、一个遭遇号和一个位置组成。transfers
数据框是通过在我的原始数据框上运行一个duplicated来找到具有相同person ID的行,并将它们分组在一起而创建的。你知道吗
例如,我们想去掉下面数据框中带有ID = 2
的行,因为在两次相遇中位置都是"D"
,所以这个人没有移动。你知道吗
但是,我们希望保留带有ID = 3
的行,因为此人从"A"
移动到了"F"
。你知道吗
另一个问题是因为有些人有两行以上,例如whereID = 1
。对于此人,我们希望保留它们的行,因为它们已从"A"
->;"B"
移动到"B"
->;"C"
。但是,如果你只比较第12次和第13次相遇,看起来这个人并没有改变位置。你知道吗
示例数据帧df
:
ID Encounter Location
1 11 A
1 12 B
1 13 B
1 14 C
2 21 D
2 22 D
3 31 A
3 32 F
预期产量:
ID Encounter Location
1 11 A
1 12 B
1 13 B
1 14 C
3 31 A
3 32 F
我曾经尝试过使用.iterrows()
的嵌套for
循环,但是我发现这不起作用,因为它的速度非常慢,并且不能正确处理一个人有两次以上遭遇的情况。我也尝试过对我的数据帧应用一个函数,但运行时几乎与原始循环相同。你知道吗
编辑:我应该明确指出这一点,我试图保持任何人谁移动了位置的数据,即使他们最终回到他们开始的地方。你知道吗
给予
您可以通过
这样做的目的是计算每个组(ID)中唯一的位置的数量,然后将一个人只去过一个地方的行删除。你知道吗
与
filter
解决方案的比较:相关问题 更多 >
编程相关推荐