我有一个数据框,其中一些列包含nan。我想删除那些具有一定数量的nan的列。例如,在下面的代码中,我想删除任何包含2个或更多nan的列。在这种情况下,“C”列将被删除,仅保留“A”和“B”。我该如何实现?importpandasaspdimportnumpyasnpdff=pd.DataFrame(np.random.randn(10,3),columns=list('ABC'))dff.iloc[3,0]=np.nandff.iloc[6,1]=np.nandff.iloc[5:8,2]=np.nanprintdff 最佳答案 d
对于df的某些列,如果该列的80%是NAN。删除此类列的最简单代码是什么? 最佳答案 您可以使用isnull与mean对于阈值,然后按booleanindexing删除列与loc(因为删除列),还需要反转条件-所以表示删除所有列>=0.8:df=df.loc[:,df.isnull().mean()示例:np.random.seed(100)df=pd.DataFrame(np.random.random((100,5)),columns=list('ABCDE'))df.loc[:80,'A']=np.nandf.loc[:5,'
这个问题在这里已经有了答案:NumPy:calculateaverageswithNaNsremoved(12个答案)关闭9年前。如何避免nan来计算数组(A)的平均值?importnumpyasnpA=[5nannannannan10]M=np.mean(A[A!=nan])doesnotworkAnyidea?
是否可以选择不删除其中包含NaN的索引?我认为默默地从枢轴上删除这些行会在某些时候给某人带来严重的痛苦。importpandasimportnumpya=[['a','b',12,12,12],['a',numpy.nan,12.3,233.,12],['b','a',123.23,123,1],['a','b',1,1,1.]]df=pandas.DataFrame(a,columns=['a','b','c','d','e'])df_pivot=df.pivot_table(index=['a','b'],values=['c','d','e'],aggfunc=sum)print
我有一个包含以下内容的数据框df:In[10]:df.index.unique()Out[10]:array([u'DC',nan,u'BS',u'AB',u'OA'],dtype=object)我可以轻松地选择df.ix["DC"]、df.ix["BS"]等。但是我在选择nan索引时遇到了问题。df.ix[nan],df.ix["nan"],df.ix[np.nan]allwon'twork.如何选择以nan为索引的行? 最佳答案 一种方法是使用df.index.isnull()来识别NaN的位置:In[218]:df=pd.Da
我正在尝试清理我的数据框,如果我的“Base_2007”和“Base_2011”列包含NA,那么我应该完全删除该县。在我的例子中,因为两个县都包含NA,所以它们都将被删除。因此将返回空数据集。有可能做这样的事情吗?数据:StateYearBase_2007Base_2011County0AL2012NaN14.0Alabama_Country1AL201312.020.0Alabama_Country2AL201413.0NaNAlabama_Country3DC2011NaN20.0Trenton4DC201219.0NaNTrenton5DC201320.021.0Trenton6
我有一个包含许多NaN值的DataFrame。我想删除包含太多NaN值的行;具体来说:7个或更多。我尝试了几种使用dropna函数的方法,但很明显它会贪婪地删除包含任何NaN值的列或行。这个问题(SlicePandasDataFramebyRow)告诉我,如果我可以编译一个包含太多NaN值的行的列表,我可以用一个简单的方法将它们全部删除df.drop(rows)我知道我可以使用count函数计算非空值,我可以从总数中减去该函数并以这种方式获得NaN计数(是否有直接的方法来计算NaN值排?)。但即便如此,我也不确定如何编写逐行遍历DataFrame的循环。下面是一些我认为正确的伪代码:#
我得到ValueError:cannotconvertfloatNaNtointeger如下:df=pandas.read_csv('zoom11.csv')df[['x']]=df[['x']].astype(int)“x”是csv文件中的一列,我无法在文件中发现任何floatNaN,而且我不明白错误或为什么会出现错误。当我将该列读取为字符串时,它的值类似于-1,0,1,...2000,对我来说都是非常好的int数字。当我将列读取为float时,就可以加载它了。然后它将值显示为-1.0,0.0等,仍然没有任何NaN-s我尝试在read_csv中使用error_bad_lines=Fa
我在下面写了一个python脚本:importnumpyasnparr=np.arange(6).reshape(2,3)arr[arr==0]=['nan']printarr但是我得到了这个错误:Traceback(mostrecentcalllast):File"C:\Users\Desktop\test.py",line4,inarr[arr==0]=['nan']ValueError:invalidliteralforlong()withbase10:'nan'[Finishedin0.2swithexitcode1]如何用nan替换NumPy数组中的零?
当我的一些数据包含“非数字”值时,我在制作直方图时遇到了问题。我可以通过使用numpy中的nan_to_num来消除错误,但是我得到了很多零值,这也弄乱了直方图。pylab.figure()pylab.hist(numpy.nan_to_num(A))pylab.show()所以我们的想法是制作另一个数组,其中所有nan值都消失了,或者只是以某种方式在直方图中屏蔽它们(最好使用一些内置方法)。 最佳答案 使用A[~np.isnan(A)]从数组中删除np.nan值,这将选择A中的所有条目>哪些值不是nan,因此在计算直方图时将排除它