我自己找到了一种从熊猫数据帧中删除nan行的方法.给定一个包含nan值的dat
列的数据框x
,是否有一种更优雅的方法来删除列中的每个行dat
都有一个nan值x
?
dat = dat[np.logical_not(np.isnan(dat.x))]
dat = dat.reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud) 我只想检查Pandas系列中的单个单元格是否为空.
即,我想检查一个值是否是NaN
.所有其他答案适用于系列和数组,但不适用于单值.
我已经试过pandas.notnull
,pandas.isnull
,numpy.isnan
.是否只有单一价值的解决方案?
在R中,我可以使用该summary
命令快速查看缺失数据的计数,但是等效的pandas
DataFrame方法describe
不会报告这些值.
我知道我可以做点什么
len(mydata.index) - mydata.count()
Run Code Online (Sandbox Code Playgroud)
计算每列的缺失值的数量,但我想知道是否有更好的习语(或者我的方法是否正确).
我df
在熊猫中有以下内容.
0 A B C
1 2 NaN 8
Run Code Online (Sandbox Code Playgroud)
我如何检查是否df.iloc[1]['B']
是NaN?
我尝试使用df.isnan()
,我得到一个这样的表:
0 A B C
1 false true false
Run Code Online (Sandbox Code Playgroud)
但我不知道如何索引表格,以及这是否是一种有效的工作方式?
df.isnull().any().any()
Run Code Online (Sandbox Code Playgroud)
此行的计算结果为布尔值True/False,因为它检查Pandas数据帧是否在其行或列中包含任何NaN.是否有更简洁/惯用的方式来检查这个?
请你们帮我解释一下下面的代码:
为什么 anan
不是np.nan
?
import pandas as pd
import numpy as np
df.iloc[31464]['SalesPersonID']
[out]:
nan
df.iloc[31464]['SalesPersonID'] is np.nan
[out]:
False
Run Code Online (Sandbox Code Playgroud)
谢谢你们。
编辑:这个问题不是pandas数据框的克隆,用列的平均值替换nan值,因为我想用列的平均值而不是数据框值的平均值替换每列的值。
题
我有一个train
包含一百列的Pandas 数据框 ( ),我必须对其应用机器学习技术。
通常我手工制作特征工程,但在这种情况下,我有很多列要处理。
我想构建一个 Python 函数:
1)找到NaN
每列中的值(我想过df.isnull().any()
)
2) 对于每个NaN
值,将其替换为找到 NaN 值的列的平均值。
我的想法是这样的:
def replace(value):
for value in train:
if train['value'].isnull():
train['value'] = train['value'].fillna(train['value'].mean())
train = train.apply(replace,axis=1)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
/opt/conda/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
3063 try:
-> 3064 return self._engine.get_loc(key)
3065 except KeyError:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'value' …
Run Code Online (Sandbox Code Playgroud)