替换缺失和不一致的值,Python

以下是一个示例:

 import pandas as pddf = pd.DataFrame({ 'Column A' : ['null',20,30,40,'null'],'Column B' : [100,'null',30,50,'null']});

示例链接

我需要一个Python函数来比较两个列:

  1. 如果一列是缺失值,我们从另一列填充它。

  2. 如果两列的值都是’NULL’,我们保留’NULL’。

  3. 如果两列的值不同(不一致),则将两列的值都替换为’NULL’。

  4. 返回一个属性。

运行函数后,数据应如下所示。结果链接

这是我目前所做的,我需要帮助实现第3步

def myFunction(firAttribute,secAttribute):    x=df.ix[:,[firAttribute,secAttribute]]    x['new']=x[firAttribute].fillna(x[secAttribute])    x['new2']=x[secAttribute].fillna(x[firAttribute])    x['new'] =x['new'].fillna(x['new2'])    return x['new'] 

回答:

你可以先使用replacenull替换为NaN,然后使用combine_first在列之间合并NaN,最后使用布尔索引来匹配不同列的值并填充NaN

import pandas as pdimport numpy as npdf = pd.DataFrame({ 'Column A' : ['null',20,30,40,'null'],                    'Column B' : [100,'null',30,50,'null']});print df  Column A Column B0     null      1001       20     null2       30       303       40       504     null     null#将null替换为NaNdf = df.replace("null", np.nan)print df   Column A  Column B0       NaN       1001        20       NaN2        30        303        40        504       NaN       NaN
df['Column A'] = df['Column A'].combine_first(df['Column B'])df['Column B'] = df['Column B'].combine_first(df['Column A'])print df   Column A  Column B0       100       1001        20        202        30        303        40        504       NaN       NaN#将不一致的值替换为NaNdf[df['Column A'] != df['Column B']] = np.nanprint df   Column A  Column B0       100       1001        20        202        30        303       NaN       NaN4       NaN       NaN

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注