当我执行df.isnull().sum()时,我得到列中空值的计数。但是.sum()的默认轴是None或0 -应该是跨列求和。为什么.sum()计算列的和,而不是行的和,而默认值是sum across axis = 0?谢谢你,谢谢
wwwo4jvm1#
我看到了你解释的相反的行为:
Sums across the columns In [3309]: df1.isnull().sum(1) Out[3309]: 0 0 1 1 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 dtype: int64
字符串对各列求和
In [3310]: df1.isnull().sum() Out[3310]: date 0 variable 1 value 0 dtype: int64
型
yqyhoc1h2#
这不是我看到的功能。让我们看看这个小例子。
import pandas as pd import numpy as np df = pd.DataFrame({'A':[np.nan, np.nan, 3],'B':[1,1,3]}, index =[*'abc']) print(df) print(df.isnull().sum()) print(df.sum())
字符串请注意,列是大写的“A”和“B”,索引或行索引是小写的。输出量:
A B a NaN 1 b NaN 1 c 3.0 3 A 2 B 0 dtype: int64 A 3.0 B 5.0 dtype: float64
型根据文件:axis:{index(0),columns(1)}要应用的函数的轴。
z9zf31ra3#
轴参数与要求和的方向正交。不幸的是,sum的pandas文档目前没有明确说明这一点,但count的文档做到了:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.count.html参数axis{0或'index',1或'columns'},默认值为0如果为每列生成0或'index'计数。如果为每行生成1或“列”计数。
vltsax254#
嘿,让我告诉你我认为它做了什么..首先.isnull()做的是如果任何列值为空,它返回值1,然后.sum()将添加.isnull()返回的1,并继续添加尽可能多的1 .isnull()将返回意味着存在尽可能多的空值,如果没有空值,.isnull()将简单地返回0,添加0将不会导致任何结果,但0。我想这能帮助你理解
.isnull()
.sum()
4条答案
按热度按时间wwwo4jvm1#
我看到了你解释的相反的行为:
字符串
对各列求和
型
yqyhoc1h2#
这不是我看到的功能。让我们看看这个小例子。
字符串
请注意,列是大写的“A”和“B”,索引或行索引是小写的。
输出量:
型
根据文件:
axis:{index(0),columns(1)}要应用的函数的轴。
z9zf31ra3#
轴参数与要求和的方向正交。
不幸的是,sum的pandas文档目前没有明确说明这一点,但count的文档做到了:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.count.html
参数axis{0或'index',1或'columns'},默认值为0如果为每列生成0或'index'计数。如果为每行生成1或“列”计数。
vltsax254#
嘿,让我告诉你我认为它做了什么..首先
.isnull()
做的是如果任何列值为空,它返回值1,然后.sum()
将添加.isnull()
返回的1,并继续添加尽可能多的1.isnull()
将返回意味着存在尽可能多的空值,如果没有空值,.isnull()
将简单地返回0,添加0将不会导致任何结果,但0。我想这能帮助你理解