相关疑难解决方法(0)

快速检查NumPy中的NaN

我正在寻找检查np.nanNumPy数组中NaN()出现的最快方法X.np.isnan(X)是不可能的,因为它构建了一个布尔形状的数组X.shape,这可能是巨大的.

我试过了np.nan in X,但这似乎不起作用,因为np.nan != np.nan.有没有一种快速且节省内存的方法来完成这项工作?

(对于那些会问"多么巨大"的人:我说不出来.这是图书馆代码的输入验证.)

python numpy nan

107
推荐指数
6
解决办法
11万
查看次数

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

我正在尝试使用MysqlDB将一个Pandas数据帧(或者可以使用numpy数组)写入mysql数据库.MysqlDB似乎不理解'nan',我的数据库抛出一个错误,说nan不在字段列表中.我需要找到一种方法将'nan'转换为NoneType.

有任何想法吗?

python numpy mysql-python pandas

99
推荐指数
7
解决办法
8万
查看次数

如何在Python中的Pandas数据框中用None替换值?

是否有任何方法可以None在Python 中用Pandas 替换值?

您可以使用df.replace('pre', 'post')并可以将值替换为另一个值,但如果您想要替换None值,则无法执行此操作,如果您尝试,则会得到一个奇怪的结果.

所以这是一个例子:

df = DataFrame(['-',3,2,5,1,-5,-1,'-',9])
df.replace('-', 0)
Run Code Online (Sandbox Code Playgroud)

返回成功的结果.

但,

df.replace('-', None)
Run Code Online (Sandbox Code Playgroud)

返回以下结果:

0
0   - // this isn't replaced
1   3
2   2
3   5
4   1
5  -5
6  -1
7  -1 // this is changed to `-1`...
8   9
Run Code Online (Sandbox Code Playgroud)

为什么会返回这么奇怪的结果?

由于我想将这个数据帧倒入MySQL数据库,因此我无法将NaN值放入数据框中的任何元素中,而是想放入None.当然,您可以先更改'-'NaN然后转换NaNNone,但我想知道为什么数据框以这种可怕的方式运行.

python replace nan dataframe pandas

68
推荐指数
5
解决办法
13万
查看次数

查找类型为float或特定类型的Pandas中的所有数据框列?

我有一个数据帧,df,有一些类型为float64的列,而其他的是对象.由于混合性质,我不能使用

df.fillna('unknown') #getting error "ValueError: could not convert string to float:"
Run Code Online (Sandbox Code Playgroud)

因为错误发生在类型为float64的列上(这是一个误导性错误消息!)

所以我希望我能做点什么

for col in df.columns[<dtype == object>]:
    df[col] = df[col].fillna("unknown")
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,是否有任何这样的过滤器表达式,我可以使用df.columns?

我想,不太优雅,我能做到:

 for col in df.columns:
        if (df[col].dtype == dtype('O')): # for object type
            df[col] = df[col].fillna('') 
            # still puzzled, only empty string works as replacement, 'unknown' would not work for certain value leading to error of "ValueError: Error parsing datetime string "unknown" at position 0" 
Run Code Online (Sandbox Code Playgroud)

我也想知道为什么在上面的代码中用''with'unknown'替换代码可以用于某些单元但是失败的单元格中出现"ValueError:Error parsing datetime string",错误"位置0"

非常感谢!

python dataframe pandas data-cleaning

42
推荐指数
3
解决办法
4万
查看次数

pandas将NaN替换为None表现出违反直觉的行为

鉴于一系列

s = pd.Series([1.1, 1.2, np.nan])
s
0    1.1
1    1.2
2    NaN
dtype: float64
Run Code Online (Sandbox Code Playgroud)

如果需要将NaN转换为无(例如,与parquets一起工作),那么我希望有

0     1.1
1     1.2
2    None
dtype: object
Run Code Online (Sandbox Code Playgroud)

我认为Series.replace这将是显而易见的方式,但这是函数返回的内容:

s.replace(np.nan, None)

0    1.1
1    1.2
2    1.2
dtype: float64
Run Code Online (Sandbox Code Playgroud)

NaN向前填充,而不是被替换.通过文档,我看到如果第二个参数是None,那么第一个参数应该是字典.基于此,我希望replace要么按预期替换,要么抛出异常.

我相信这里的解决方法是

pd.Series([x if pd.notna(x) else None for x in s], dtype=object) 
0     1.1
1     1.2
2    None
dtype: object
Run Code Online (Sandbox Code Playgroud)

哪个好.但我想了解为什么会出现这种情况,是否记录在案,或者它只是一个错误而且我必须清除我的git配置文件并在问题跟踪器上记录一个...任何想法?

python replace pandas

14
推荐指数
1
解决办法
325
查看次数

python:将pandas dataframe中的数值数据转换为存在字符串时的浮点数

我有一个带有'cap'列的pandas数据框.此列主要由浮点数组成,但其中包含一些字符串,例如索引2.

df =
    cap
0    5.2
1    na
2    2.2
3    7.6
4    7.5
5    3.0
...
Run Code Online (Sandbox Code Playgroud)

我从csv文件导入我的数据,如下所示:

df = DataFrame(pd.read_csv(myfile.file))
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我这样做时,列'cap'完全作为字符串导入.我希望浮动被识别为浮点数和字符串作为字符串.尝试使用以下方法转换:

df['cap'] = df['cap'].astype(float)
Run Code Online (Sandbox Code Playgroud)

抛出一个错误:

could not convert string to float: na
Run Code Online (Sandbox Code Playgroud)

有没有办法让所有数字成为浮点数但是将'na'保持为字符串?

python dataframe pandas

13
推荐指数
2
解决办法
5万
查看次数

删除NaN'Cell'而不丢弃整个ROW(Pandas,Python3)

现在我有这样的DF

 Word       Word2          Word3
 Hello      NaN            NaN
 My         My Name        NaN
 Yellow     Yellow Bee     Yellow Bee Hive
 Golden     Golden Gates   NaN
 Yellow     NaN            NaN
Run Code Online (Sandbox Code Playgroud)

我希望的是从我的数据框中删除所有NaN细胞.所以最后,它看起来像这样,'Yellow Bee Hive'已经移动到第1行(类似于从excel中的列中删除单元格时发生的情况):

   Word       Word2             Word3
1  Hello      My Name        Yellow Bee Hive
2  My         Yellow Bee       
3  Yellow     Golden Gates             
4  Golden       
5  Yellow    
Run Code Online (Sandbox Code Playgroud)

不幸的是,这些都不起作用,因为他们删除了整条行!

 df = df[pd.notnull(df['Word','Word2','Word3'])]
Run Code Online (Sandbox Code Playgroud)

要么

 df = df.dropna() 
Run Code Online (Sandbox Code Playgroud)

有人有什么建议吗?我应该重新索引桌子吗?

python python-3.x pandas

6
推荐指数
1
解决办法
3291
查看次数

通过使用正则表达式将值替换为np.nan

我有一个如下数据框:

data1 = {"first":["alice", "bob", "carol"],
         "last_huge":["foo", "bar", "baz"]}
df = pd.DataFrame(data1)
Run Code Online (Sandbox Code Playgroud)

例如,我想将所有字符'o'替换为'a':

那我做

df.replace({"o":"a"},regex=True)
Out[668]: 
   first last
0  alice  faa
1    bab  bar
2  caral  baz
Run Code Online (Sandbox Code Playgroud)

它还给我我需要的东西。

但是,当我要将'o'替换为时np.nan,它将整个字符串更改为np.nan熊猫的文件有什么解释吗?我可以通过源代码找到一些信息。

更多信息:(它将整个字符串更改为np.nan

df.replace({"o":np.nan},regex=True)
Out[669]: 
   first last
0  alice  NaN
1    NaN  bar
2    NaN  baz
Run Code Online (Sandbox Code Playgroud)

python pandas

5
推荐指数
1
解决办法
1189
查看次数

pandas.DataFrame.replace 更改列的 dtype

所以我试图用np.nan我的数据框中的值替换None并注意到在这个过程中数据框中float列的数据类型更改为object即使它们不包含任何丢失的数据。

举个例子:

import pandas as pd
import numpy as np
data = pd.DataFrame({'A':np.nan,'B':1.096, 'C':1}, index=[0])
data.replace(to_replace={np.nan:None}, inplace=True)
Run Code Online (Sandbox Code Playgroud)

在调用data.dtypes之前和之后调用 toreplace显示列 B 的数据类型从 float 变为 object 而 C 的数据类型保持在 int。如果我从不会发生的原始数据中删除 A 列。我想知道为什么会发生这种变化以及如何避免这种影响。

python pandas

5
推荐指数
1
解决办法
3642
查看次数

用另一个系列的值覆盖(更新)一个熊猫系列?

我有两个熊猫系列:serovr

ser包含对象,并且ovrSeries对象和的稀疏对象Noneserovr共享相同的索引,我想ser用的对应值覆盖的每个值ovr,除非该对应的值是None

有什么有效的方法可以做到这一点?

python pandas

4
推荐指数
1
解决办法
4841
查看次数