草庐IT

Python Pandas 将多列零替换为 Nan

载入pandas数据框df2的人员属性列表。对于清理,我想用np.nan替换值零(0或'0')。df2.dtypesIDobjectNameobjectWeightfloat64Heightfloat64BootSizeobjectSuitSizeobjectTypeobjectdtype:object将值零设置为np.nan的工作代码:df2.loc[df2['Weight']==0,'Weight']=np.nandf2.loc[df2['Height']==0,'Height']=np.nandf2.loc[df2['BootSize']=='0','BootSize']=np.

python - 从 Python 中的 NaN(或其他值)的 numpy 数组中删除成对的元素

我在numpy中有一个包含两列的数组。例如:a=array([[1,5,nan,6],[10,6,6,nan]])a=transpose(a)我想高效地遍历a[:,0]和a[:,1]两列,并删除满足特定条件的任何对,在本例中为NaN。我能想到的明显方法是:new_a=[]forval1,val2ina:ifval2==nanorval2==nan:new_a.append([val1,val2])但这看起来很笨拙。执行此操作的pythonicnumpy方法是什么?谢谢。 最佳答案 如果您只想获取没有NAN的行,这是您需要的表达式:>

python - 检查容器中是否存在 NaN

当我检查它是否存在于列表或集合中时,NaN得到了完美的处理。但我不明白如何。[更新:不,不是;如果找到相同的NaN实例,则报告为存在;如果仅发现不相同的NaN实例,则将其报告为不存在。]我认为列表中的存在是通过相等性来检验的,所以我预计不会找到NaN,因为NaN!=NaN。hash(NaN)和hash(0)都是0。字典和集合如何区分NaN和0?使用in运算符检查任意容器中是否存在NaN是否安全?还是依赖于实现?我的问题是关于Python3.2.1;但如果future版本中存在/计划进行任何更改,我也想知道。NaN=float('nan')print(NaN!=NaN)#Trueprin

python - 1**math.nan 和 0j**math.nan 的惊喜

我很惊讶>>>importmath>>>1**math.nan1.0当我们在做的时候,还有那个>>>0j**math.nan0j我没有找到任何其他示例。是否有我错过的原因或逻辑使它成为正确的选择?或者这是一个失误?我期待着nan。至于除1或0j之外的所有其他数字。编辑1:感谢jedwards在下面的评论,我有了一个引用。但我还是不明白为什么。为什么将其定为标准?此外,找不到对0j**mat.nan的引用...编辑2:所以按照下面的答案和其他一些东西,逻辑可能是这样的:任何涉及nan的计算都应该返回nan除非无论参数如何,计算总是返回相同的答案。在这种情况下,我们将nan作为参数应该不会

python - numpy:NaN 和掩码数组之间的区别

在numpy中有两种标记缺失值的方法:我可以使用NaN或maskedarray。我知道使用NaN(可能)更快,而掩码数组提供更多功能(哪个?)。我想我的问题是我是否/什么时候应该使用一个而不是另一个?np.NaN在常规数组与屏蔽数组中的用例是什么?我确信答案一定在那里,但我找不到... 最佳答案 区别在于两种结构保存的数据。使用regulararraywithnp.nan,无效值后面没有数据。使用maskedarray,您可以初始化一个完整的数组,然后在其上应用一个掩码,以便某些值看起来无效。numpy.ma模块提供的方法使您不必处

python - Pandas 将 'NA' 转换为 NaN

我刚拿起Pandas来做我生物学研究中的一些数据分析工作。原来我正在分析的一种蛋白质叫做“NA”。我有一个矩阵,列标题上有成对的“HA、M1、M2、NA、NP...”,与“行标题”相同(对于可能阅读本文的生物学家,我正在与流感)。当我将数据直接从CSV文件导入Pandas时,它会将“行标题”读取为“HA、M1、M2...”,然后将NA读取为NaN。有什么办法可以阻止这种情况吗?列标题很好-'HA、M1、M2、NA、NP等...' 最佳答案 以这种方式关闭NaN检测:pd.read_csv(filename,keep_default_

python - 从集合中移除 NaN 值

是否可以轻松删除PythonSet对象的NaN值?鉴于NaN值不等于任何值(并且float('nan')是float('nan')也是False),您最终可以得到许多NaN值在一个集合中。>>>a=set((float('nan'),float('nan'),'a'))>>>a{nan,nan,'a'}我能想到的最好的办法是定义一个像math.isnan这样的函数,但它可以容忍非浮点类型,例如:defmy_isnan(x):try:returnmath.isnan(x)exceptTypeError:returnFalse然后你可以像这样使用集合理解:>>>{xforxinaifnot

Python:如何删除特定列为空/NaN 的行?

我有一个csv文件。我读了:importpandasaspddata=pd.read_csv('my_data.csv',sep=',')data.head()输出如下:idcitydepartmentsmscategory01khirevenueNaN002lhrrevenuegood103lhrrevenueNaN0我想删除所有sms列为空/NaN的行。什么是有效的方法? 最佳答案 使用dropna使用参数subset指定要检查的列NaNs:data=data.dropna(subset=['sms'])print(data)i

python - 当其中的nan值时如何获取Pandas DataFrame中的最大/最小值

由于我的pandas数据框的一列有nan值,所以当我想获取该列的最大值时,它只会返回错误。>>>df.iloc[:,1].max()'error:512'如何跳过nan值并获取该列的最大值? 最佳答案 您可以使用NumPy的帮助np.nanmax,np.nanmin:In[28]:dfOut[28]:ABC07NaN81335281733034827In[29]:np.nanmax(df.iloc[:,1].values)Out[29]:3.0In[30]:np.nanmin(df.iloc[:,1].values)Out[30]:

python - 考虑到 nans,如何有条件地更改 numpy 数组中的值?

我的数组是一个二维矩阵,除了负值和正值外,它还有numpy.nan值:>>>arrayarray([[nan,nan,nan,...,-0.04891211,nan,nan],[nan,nan,nan,...,nan,nan,nan],[nan,nan,nan,...,nan,nan,nan],...,[-0.02510989,-0.02520096,-0.02669156,...,nan,nan,nan],[-0.02725595,-0.02715945,-0.0286231,...,nan,nan,nan],[nan,nan,nan,...,nan,nan,nan]],dtype=