替换缺失和不一致的值,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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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