Python 比较两个数据帧并找到空值的数量

Python 比较两个数据帧并找到空值的数量,python,sql,pandas,Python,Sql,Pandas,我有个问题。我拥有名为“df”的数据帧1: 我有数据帧2,名为“dfP1”: 我想比较“dfP1”中列“Campo a Validar”中存在的唯一行与“df”中的列,如果存在计算匹配列中空值数量的巧合的话。然后,空值的数量将插入数据帧df中的新列名称“Numeros_de_nulos”,但仅插入第0行(索引0) 以下是一些尝试过的东西: #Validacion de Regla 1 if pd.isnull(df["Nº Línea Cliente"]).values.ravel(

我有个问题。我拥有名为“df”的数据帧1:

我有数据帧2,名为“dfP1”:

我想比较“dfP1”中列“Campo a Validar”中存在的唯一行与“df”中的列,如果存在计算匹配列中空值数量的巧合的话。然后,空值的数量将插入数据帧df中的新列名称“Numeros_de_nulos”,但仅插入第0行(索引0)

以下是一些尝试过的东西:

    #Validacion de Regla 1
if pd.isnull(df["Nº Línea Cliente"]).values.ravel().sum() > 0:
    nulos = pd.isnull(df["Nº Línea Cliente"]).values.ravel().sum()
    print("Hay {} valores nulos".format(nulos))
    dfP1['Numeros_de_Nulos'] = None

else:
    print ("No hay valores nulos")
dfP1.head()

我想我可能有答案

# Count number of NULL values in column 'Nº Línea Cliente'
nulos = df['Nº Línea Cliente'].isnull().sum()

# If nulos is greater than zero
if nulos > 0:
    # Create a column of nulls
    dfP1['Numeros_de_Nulos'] = None
    # dfP1['Numeros_de_Nulos'] = 0
    # dfP1['Numeros_de_Nulos'] = np.NaN

    # Use DataFrame.loc[<index>, <column name>] to set a new value
    dfP1.loc[0, 'Numeros_de_Nulos'] = nulos

*更多关于pandas.DataFrame.loc()的信息确定您需要什么有点困难,但这可能接近您的理想解决方案

将熊猫作为pd导入
来自numpy INPORT NaN
#假设这些词典准确地反映了
#数据帧的内容,然后
#以下可能会起作用:
_df={
“c1”:[1.0,3.0,5.0,7.0],
“c2”:[1.0,3.0,5.0,7.0],
“c3”:[1.0,3.0,5.0,7.0],
“c4”:[1.0,3.0,5.0,7.0],
“NºLínea客户”:[
“Hay algo”,
“Hay algo”,
“Hay algo”,
南],,
“c6”:[1.0,3.0,5.0,7.0],
“c7”:[1.0,3.0,5.0,7.0],
“c8”:[1.0,3.0,5.0,7.0],
“c9”:[1.0,3.0,5.0,7.0],
“c10”:[1.0,3.0,5.0,7.0],
}
Campo_a_Validar=[
“NºLínea客户”
对于范围内的campo(4)]
Campo_a_Validar.追加(“TIPO DE GARANTIA 1”)
_dfP1={
“ID_Val”:[1,2,3,4,5],
“Tipo_Validación”:[1,2,3,4,1],
“Campo_a_Validar”:Campo_a_Validar,
}
#初始化数据帧
df=pd.DataFrame(_-df)
dfP1=pd.DataFrame(_-dfP1)
定义分析参数(_df_,_dfP1_):
尝试:
contar_nulos=lambda DF,ColName:DF.groupby([ColName])[ColName].nunique()
nulos_de_df=contar_nulos(_df_,“NºLínea客户”)
nulos_de_dfP1=contar_nulos(“Campo_a_Validar”)
断言(
数值[0]==数值[0]
)
num_nulos=nulos_de_df
返回数值[0]
除断言错误外:
返回0
#检查唯一行数是否正确
#等于中的唯一行数
#另一张桌子
是否符合=分析(df,dfP1)
如果是巧合:
base=[是巧合]
base.extend([“”
用于范围内的位置(len(df.c1)-1)])
num_columns=len(df.T)
插入(
loc=num_列,
column=“Numeros\u de\u Nulos”,
值=基数
)
打印(df)
其他:
打印(df)
输出:

   ID_val  Tipo_Validacion     Campo_a_Validar Numeros_de_Nulos
0       1                1    Nº Línea Cliente                1
1       2                2    Nº Línea Cliente             None
2       3                3    Nº Línea Cliente             None
3       4                4    Nº Línea Cliente             None
4       5                1  TIPO DE GARANTIA 1             None
    c1   c2   c3   c4 Nº Línea Cliente   c6   c7   c8   c9  c10 Numeros_de_Nulos
0  1.0  1.0  1.0  1.0         Hay algo  1.0  1.0  1.0  1.0  1.0                1
1  3.0  3.0  3.0  3.0         Hay algo  3.0  3.0  3.0  3.0  3.0                 
2  5.0  5.0  5.0  5.0         Hay algo  5.0  5.0  5.0  5.0  5.0                 
3  7.0  7.0  7.0  7.0              NaN  7.0  7.0  7.0  7.0  7.0                 

请复制并粘贴您的数据框,以及您的预期output@ansev是对的;在以后的帖子中加入你想要的输出是个好主意,因为这有助于我们为你提供你需要的。顺便问一下,西班牙语变量和函数有帮助吗?
df['Numero_de_nulos']=nulos.fillna(None)
必须选择带有loc的索引necessary@ansev
nulos
是一个整数值,所以我不知道如何应用fillna()方法?对于第二条注释,不使用loc()通常会引发
设置WithCopyWarning
。更多信息请参见: