比较两列与Pandas中的NaN并得出差异

问题描述

我有以下数据框:

    if ($result->num_rows > 0) {
    // output data of each row
    echo "<center><table>";
    echo "<tr>";
    echo "<th>Legal Business Name</th>";
    echo "<th>DBA Name</th>";
    echo "<th>Business Address</th>";
    echo "<th>Website  Address</th>";
    echo "<th>Business Government POC</th>";
    echo "</tr>";
    while($row = $result->fetch_assoc()) {                  
    echo  "<tr><td>" . $row["LEGAL_BUSINESS_NAME"]. "</td>";
    echo  "<td>" . $row["DBA_NAME"]. "</td>";
    echo  "<td>" . $row["PHYSICAL_ADDRESS_LINE_1"]. "<br>" . $row["PHYSICAL_ADDRESS_LINE_2"]. "<br>" . $row["PHYSICAL_ADDRESS_CITY"]. "," . $row["PHYSICAL_ADDRESS_PROVINCE_OR_STATE"]. " " . $row["PHYSICAL_ADDRESS_ZIP_POSTAL_CODE"]. "+" . $row["PHYSICAL_ADDRESS_ZIP_CODE_PLUS_4"]. " " . $row["PHYSICAL_ADDRESS_COUNTRY_CODE"]. "</td>";
   echo  "<td>" . $row["CORPORATE_URL"]. "</td>";
   echo  "<td>" . $row["GOVT_BUS_POC_FIRST_NAME"]. " " . $row["GOVT_BUS_POC_MIDDLE_INITIAL"]. " " . $row["GOVT_BUS_POC_LAST_NAME"]. "<br> P: ". $row["GOVT_BUS_POC_US_PHONE"]. "<br> E: ". $row["GOVT_BUS_POC_EMAIL"]. "</td>";
   echo "</tr>";                    
}
   echo "</table>";

我想获得一列“匹配”,该列将显示“ c1”和“ c2”中的值相同或不同的记录:

case c1   c2
1    x    x
2    NaN  y
3    x    NaN
4    y    x
5    NaN  NaN 

我根据另一个堆栈溢出问题尝试了以下方法:Comparing two columns and keeping NaNs 但是,我无法正确解决第4种情况和第5种情况。

case c1   c2   match
1    x    x    True  
2    NaN  y    False
3    x    NaN  False
4    y    x    False
5    NaN  NaN  True 

解决方法

eqisna一起使用:

df.c1.eq(df.c2)|df.iloc[:,1:].isna().all(1)
#or
df.c1.eq(df.c2)|df.loc[:,['c1','c2']].isna().all(1)
,
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'case': [1,2,3,4,5],'c1': ['x',np.nan,'x','y',np.nan],'c2': ['x',})


df['c3'] = df.apply(lambda row: True if str(row.c1) == str(row.c2) else False,axis=1)


print(df)

输出

   case   c1   c2     c3
0     1    x    x   True
1     2  NaN    y  False
2     3    x  NaN  False
3     4    y    x  False
4     5  NaN  NaN   True
,

nuquinefillna一起使用

import numpy as np

df.fillna(np.inf)[['c1','c2']].nunique(1) < 2

nunique和选项dropna=False

df[['c1','c2']].nunique(1,dropna=False) < 2

Out[13]:
0     True
1    False
2    False
3    False
4     True
dtype: bool

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...