Python 比较两个数据帧并找到空值的数量
我有个问题。我拥有名为“df”的数据帧1: 我有数据帧2,名为“dfP1”: 我想比较“dfP1”中列“Campo a Validar”中存在的唯一行与“df”中的列,如果存在计算匹配列中空值数量的巧合的话。然后,空值的数量将插入数据帧df中的新列名称“Numeros_de_nulos”,但仅插入第0行(索引0) 以下是一些尝试过的东西: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(
#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@ansevnulos
是一个整数值,所以我不知道如何应用fillna()方法?对于第二条注释,不使用loc()通常会引发设置WithCopyWarning
。更多信息请参见: