问题描述
在这里找不到类似的问题。
请在下面找到表格:
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
- 如果列B不为空,则将B中的值与A中的值进行比较,并尝试查找匹配的值。例如A列第一行中的“ pen” = B列第二行中的“ pen”。
- 如果识别出匹配的值,则需要在A列中找到索引。 “ pen”是一个匹配值,A列中“ pen”的索引为0。
我的预期输出是:
A B C D
0 pen nan dfds 1238
2 Peach nan kd 878
3 grape peach jil 9kj
并保留原始索引号,如输出示例所示
df2=df[df[['A','B']].nunique(axis=1)==1]
但是当B列不为null时,我不知道如何添加条件。而且我不想做循环迭代,因为数据集非常大。
非常感谢!
解决方法
我认为,在问题的第一点,您是说“ C ”列不为空吗?但是无论如何,我都会在列“ B ”中进行演示。
为此,您必须创建一个仅包含非空值的新数据框。
df_not_null = df.dropna(subset=['B'])
然后,您可以比较任何您想比较的东西。
df2 = df_not_null[df_not_null[['A','B']].nunique(axis=1)==1]