Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 空数据帧不允许其为空_Python_Pandas_Dataframe_Is Empty - Fatal编程技术网

Python 空数据帧不允许其为空

Python 空数据帧不允许其为空,python,pandas,dataframe,is-empty,Python,Pandas,Dataframe,Is Empty,当涉及到数据帧时,我一定不能理解一些关于空的东西。我有一个带有空行的DF,但当我隔离其中一行时,它不是空的 这里我制作了一个数据帧: >>> df = pandas.DataFrame(columns=[1,2,3], data=[[1,2,3],[1,None,3],[None, None, None],[3,2,1],[4,5,6],[None,None,None],[None,None,None]]) >>> df 1 2 3 0

当涉及到数据帧时,我一定不能理解一些关于空的东西。我有一个带有空行的DF,但当我隔离其中一行时,它不是空的

这里我制作了一个数据帧:

>>> df = pandas.DataFrame(columns=[1,2,3], data=[[1,2,3],[1,None,3],[None, None, None],[3,2,1],[4,5,6],[None,None,None],[None,None,None]])
>>> df
     1    2    3
0  1.0  2.0  3.0
1  1.0  NaN  3.0
2  NaN  NaN  NaN
3  3.0  2.0  1.0
4  4.0  5.0  6.0
5  NaN  NaN  NaN
6  NaN  NaN  NaN
>>> df1 = df[2:3]
>>> df1
    1   2   3
2 NaN NaN NaN

>>> df1.empty
False
然后我知道第2行什么都没有,所以我检查一下

>>> df[2:3].empty
    False
奇怪。因此,我将其拆分为自己的数据帧:

>>> df = pandas.DataFrame(columns=[1,2,3], data=[[1,2,3],[1,None,3],[None, None, None],[3,2,1],[4,5,6],[None,None,None],[None,None,None]])
>>> df
     1    2    3
0  1.0  2.0  3.0
1  1.0  NaN  3.0
2  NaN  NaN  NaN
3  3.0  2.0  1.0
4  4.0  5.0  6.0
5  NaN  NaN  NaN
6  NaN  NaN  NaN
>>> df1 = df[2:3]
>>> df1
    1   2   3
2 NaN NaN NaN

>>> df1.empty
False
如何检查一行中的所有元素是否为None或NaN


我猜你在找这样的东西:

In [296]: df[5:]
Out[296]:
    1   2   3
5 NaN NaN NaN
6 NaN NaN NaN

In [297]: df[5:].isnull().all(1).all()
Out[297]: True
或者更好的做法是:


你误解了什么是空的。这意味着检查序列/数据帧的大小是否大于0,这意味着存在行。比如说,

df.iloc[1:0]

Empty DataFrame
Columns: [1, 2, 3]
Index: []

df.iloc[1:0].empty
True
如果要检查一行是否包含所有NAN,请使用isnull+all:

例如,这应该做到:

df[2:3].isnull().all(1).item()
True
请注意,如果切片的大小超过一行,则不能使用item。

我想您必须使用isnull而不是空


您可以从选择中删除所有空值,并检查结果是否为空:

>>> df[5:].dropna(how='all').empty
True

如果您不想将NaN值计算为实数,则此值将等于

df.dropna().iloc[5:]
您选择了数据框中不存在的行

df.dropna().iloc[5:].empty
Out[921]: True

如果您有一个dataframe,并且希望删除每个列中包含NaN的所有行,那么可以这样做

df.dropna(how='all')
注意,在某些情况下,数据帧的列中也有NaN。如果在这种情况下需要删除整行:

df.dropna(how='any')
执行此操作后,您可以使用以下方法检查数据帧长度及其包含的行数:

len(df)

空意味着它的长度是0,并不是说它有所有*nans.pandas.pydata.org/pandas docs/version/0.18/generated/…检查网站示例,他们已经在错误的地方提供了解决方案ee和@MaxU I post…哈哈,应该在问题下发布,,,对不起
len(df)