当一列不为null时,python将在两列之间匹配值

2024-05-10 10:37:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在这里没有发现类似的问题

请查看下表:

         A       B       C      D
  0     pen     nan     dfds    1238
  1     Apple   pen     fsd      324
  2     Peach   nan     kd       878
  3     grape   peach   jil      9kj
  4     laptop  nan     lks      873p
  5     light   grape   kje      7623d
  6     nan     grape   3r43     kj23
  7     nan     grape   3fdf     8734d
  1. 如果列B不为空,则将B中的值与A中的值进行比较,并尝试查找匹配的值。e、 g.A列第1行中的“笔”=“B列第2行中的笔”
  2. 如果确定了匹配值,则需要在A列中查找索引。例如,“笔”是匹配值,A列中“笔”的索引为0

我的预期产出是:

         A       B        C      D 
  0     pen     nan     dfds    1238
  2     Peach   nan     kd       878
  3     grape   peach   jil      9kj

并保留原始索引号,如输出示例所示

我知道如何在A和B之间进行匹配。我的代码是

df2=df[df[['A','B']].nunique(axis=1)==1]

但我不知道如何在B列不为null时添加条件。我不想做循环迭代,因为数据集非常大

非常感谢


Tags: appledfnankdlightpeachlaptoppen
1条回答
网友
1楼 · 发布于 2024-05-10 10:37:37

我想,在你问题的第1点,你的意思是“C”列不是空的吗??但不管怎样,我将通过“B”列来演示它

为此,您必须创建一个仅包含非空值的新数据帧

df_not_null = df.dropna(subset=['B'])

然后你可以比较你想比较的任何东西

df2 = df_not_null[df_not_null[['A','B']].nunique(axis=1)==1]

相关问题 更多 >