草庐IT

python - 从 Pandas 系列中删除 NaN

有没有办法从Pandas系列中删除NaN值?我有一个系列,其中可能有也可能没有一些NaN值,我想返回一个删除了所有NaN的系列的副本。 最佳答案 >>>s=pd.Series([1,2,3,4,np.NaN,5,np.NaN])>>>s[~s.isnull()]0112233455更新甚至@DSM在评论中建议的更好的方法,使用pandas.Series.dropna():>>>s.dropna()0112233455 关于python-从Pandas系列中删除NaN,我们在StackOv

python - 如何在 Pandas 数据框中将单元格设置为 NaN

我想用NaN替换数据框列中的错误值。mydata={'x':[10,50,18,32,47,20],'y':['12','11','N/A','13','15','N/A']}df=pd.DataFrame(mydata)df[df.y=='N/A']['y']=np.nan不过,最后一行失败并引发警告,因为它正在处理df的副本。那么,处理这个问题的正确方法是什么?我见过很多使用iloc或ix的解决方案,但在这里我需要使用bool条件。 最佳答案 只需使用替换:In[106]:df.replace('N/A',np.NaN)Out[

python - 在 pandas 数据框中查找具有 NaN 的行的整数索引

我有一个这样的Pandas数据框:ab2011-01-0100:00:001.883381-0.4166292011-01-0101:00:000.149948-1.7821702011-01-0102:00:00-0.4076040.3141682011-01-0103:00:001.452354NaN2011-01-0104:00:00-1.224869-0.9474572011-01-0105:00:000.4983260.0704162011-01-0106:00:000.401665NaN2011-01-0107:00:00-0.0197660.5336412011-01-0

python - NaN 和 None 有什么区别?

我正在使用pandasreadcsv()读取csv文件的两列,然后将值分配给字典。这些列包含数字和字母的字符串。偶尔会出现单元格为空的情况。在我看来,读取到该字典条目的值应该是None而是分配了nan。当然None更能描述空单元格,因为它有一个空值,而nan只是表示读取的值不是数字。我的理解是否正确,None和nan有什么区别?为什么分配的是nan而不是None?另外,我的字典检查是否有任何空单元格一直在使用numpy.isnan():fork,vinmy_dict.iteritems():ifnp.isnan(v):但这给了我一个错误,说我不能对v使用此检查。我猜这是因为要使用整数或

python - 如何用 pandas DataFrame 中的前一个或下一个值替换 NaN?

假设我有一个带有一些NaNs的DataFrame:>>>importpandasaspd>>>df=pd.DataFrame([[1,2,3],[4,None,None],[None,None,9]])>>>df012012314NaNNaN2NaNNaN9我需要做的是将每个NaN替换为其上方同一列中的第一个非NaN值。假定第一行永远不会包含NaN。因此,对于前面的示例,结果将是012012314232429我可以逐列、逐个元素地遍历整个DataFrame并直接设置值,但有没有一种简单(最好是无循环)的方法来实现这一点? 最佳答案

python - 使用 str.contains 忽略 NaN

我想查找包含字符串的行,如下所示:DF[DF.col.str.contains("foo")]但是,这会失败,因为某些元素是NaN:ValueError:cannotindexwithvectorcontainingNA/NaNvalues所以我求助于混淆DF[DF.col.notnull()][DF.col.dropna().str.contains("foo")]有没有更好的办法? 最佳答案 有一个标志:In[11]:df=pd.DataFrame([["foo1"],["foo2"],["bar"],[np.nan]],col

python - 用 None 替换 Pandas 或 Numpy Nan 以与 MysqlDB 一起使用

我正在尝试使用MysqlDB将Pandas数据框(或可以使用numpy数组)写入mysql数据库。MysqlDB似乎不理解“nan”,我的数据库抛出一个错误,指出nan不在字段列表中。我需要找到一种将“nan”转换为NoneType的方法。有什么想法吗? 最佳答案 @bogatron说得对,你可以使用where,值得注意的是,您可以在pandas中本地执行此操作:df1=df.where(pd.notnull(df),None)注意:这会将所有列的dtype更改为object。例子:In[1]:df=pd.DataFrame([1,

python - Pandas 数据帧 : replace nan values with average of columns

我有一个PandasDataFrame,其中大部分填充了实数,但其中也有一些nan值。如何将nan替换为它们所在列的平均值?这个问题与这个问题非常相似:numpyarray:replacenanvalueswithaverageofcolumns但不幸的是,那里给出的解决方案不适用于pandasDataFrame。 最佳答案 您可以简单地使用DataFrame.fillna直接填写nan的:In[27]:dfOut[27]:ABC0-0.1669190.979728-0.6329551-0.297953-0.912674-1.365

python - 将包含 NaN 的 Pandas 列转换为 dtype `int`

我从.csv文件读取数据到Pandas数据框,如下所示。对于其中一列,即id,我想将列类型指定为int。问题是id系列有缺失/空值。当我在读取.csv时尝试将id列转换为整数时,我得到:df=pd.read_csv("data.csv",dtype={'id':int})error:IntegercolumnhasNAvalues或者,我在阅读后尝试转换列类型,但这次我得到:df=pd.read_csv("data.csv")df[['id']]=df[['id']].astype(int)error:CannotconvertNAtointeger我该如何解决这个问题?

python - 在 Pandas 中用 NaN 替换空白值(空格)

我想在Pandas数据框中查找包含空格(任意数量)的所有值,并将这些值替换为NaN。有什么想法可以改进吗?基本上我想转这个:ABC2000-01-01-0.532681foo02000-01-021.490752bar12000-01-03-1.387326foo22000-01-040.814772baz2000-01-05-0.22255242000-01-06-1.176781qux进入这个:ABC2000-01-01-0.532681foo02000-01-021.490752bar12000-01-03-1.387326foo22000-01-040.814772bazNaN