如果在 Pandas 中满足多列的唯一条件,则填充 nan 值

时间:2021-02-23 23:11:39

标签: python pandas unique

<块引用>

如果 col1 和 col2 的组合在另一行中匹配(但只匹配一次),我想填充 col3 nan 值。例如:在第 2 行,由于 col1 和 col2 都是 cat,那么用 'George' 填充 col3。在第 4 行,由于 col1 和 col2 是 Cat 和 Dog,那么将 col3 填充为 Matt

<块引用>

但是,如果组合出现不止一次,如第 5 行和第 7 行,则忽略不要用任何东西填充 nan。

<头>
col1 col2 col3
乔治
马特
鹦鹉 麋鹿 约翰
鹦鹉 麋鹿
鹦鹉 麋鹿 瑞恩
鹦鹉 麋鹿
<头>
col1 col2 col3
乔治
乔治
马特
马特
鹦鹉 麋鹿 约翰
鹦鹉 麋鹿
鹦鹉 麋鹿 瑞恩
鹦鹉 麋鹿
<块引用>

我希望这是有道理的。谢谢

1 个答案:

答案 0 :(得分:0)

我们可以先得到每组col1, col3的大小。然后我们使用 ffill 的大小为 2 的那些:

sizes = df.groupby(['col1', 'col2'])['col2'].transform("size")
df.loc[sizes <= 2, "col3"] = df.loc[sizes <= 2, "col3"].ffill()
     col1 col2    col3
0     Cat  Cat  George
1     Cat  Cat  George
2     Cat  Dog    Matt
3     Cat  Dog    Matt
4  Parrot  Elk    John
5  Parrot  Elk     NaN
6  Parrot  Elk    Ryan
7  Parrot  Elk     NaN
相关问题