Pandas 熊猫:如何使用convert_对象用NaN值替换字符串
这与我之前提出的一个问题有关,这里: 然而,由于这个问题很久以前就得到了回答,我在这里开始了一个新的问题。我实际上是在尝试使用convert_对象在以下数据帧(此处缩写)中将字符串值替换为1: 我正在使用以下代码来完成此操作。实际上,我已经尝试在整个数据帧上使用此代码,并将其应用于特定列。每次的结果都是没有错误消息,但数据也没有更改(没有值转换为NaN,数据类型仍然是“O”) 或 期望的最终输出如下:Pandas 熊猫:如何使用convert_对象用NaN值替换字符串,pandas,dataframe,Pandas,Dataframe,这与我之前提出的一个问题有关,这里: 然而,由于这个问题很久以前就得到了回答,我在这里开始了一个新的问题。我实际上是在尝试使用convert_对象在以下数据帧(此处缩写)中将字符串值替换为1: 我正在使用以下代码来完成此操作。实际上,我已经尝试在整个数据帧上使用此代码,并将其应用于特定列。每次的结果都是没有错误消息,但数据也没有更改(没有值转换为NaN,数据类型仍然是“O”) 或 期望的最终输出如下: uniq_epoch T_Opp T_Eval 1
uniq_epoch T_Opp T_Eval
1 0 0
1 0 1
2 1 0
3 0 0
3 1 0
...
在此之前可能还有一个步骤,其中1s为NaN,fillna(1)用于在已插入字符串的位置插入1s
我已经搜索了stackoverflow上的文章,并查看了convert_对象的文档,但不幸的是,它非常稀疏。如果不是上一篇文章(链接在上面),我甚至不知道会尝试这样应用它
我还将提到,这些列中有相当多的字符串(代码),代码可以重新组合,因此使用dict和replace()执行此操作所需的时间与我手动执行此操作所需的时间大致相同
基于上一篇文章和我能找到的各种资源,我不明白为什么这不起作用-非常感谢任何帮助,包括指向进一步的文档。这是在0.13.1上
文件
及
也许你有一个更老的版本;IIRCconvert_对象
在0.11中引入
In [5]: df = read_csv(StringIO(data),sep='\s+',index_col=0)
In [6]: df
Out[6]:
T_Opp T_Eval
uniq_epoch
1 0 0
1 0 vv.bo
2 bx 0
3 0 0
3 vo.bp 0
[5 rows x 2 columns]
In [7]: df.convert_objects(convert_numeric=True)
Out[7]:
T_Opp T_Eval
uniq_epoch
1 0 0
1 0 NaN
2 NaN 0
3 0 0
3 NaN 0
[5 rows x 2 columns]
In [8]: df.convert_objects(convert_numeric=True).dtypes
Out[8]:
T_Opp float64
T_Eval float64
dtype: object
In [9]: df.convert_objects(convert_numeric=True).fillna(1)
Out[9]:
T_Opp T_Eval
uniq_epoch
1 0 0
1 0 1
2 1 0
3 0 0
3 1 0
[5 rows x 2 columns]
这是在0.13.1上
文件
及
也许你有一个更老的版本;IIRCconvert_对象
在0.11中引入
In [5]: df = read_csv(StringIO(data),sep='\s+',index_col=0)
In [6]: df
Out[6]:
T_Opp T_Eval
uniq_epoch
1 0 0
1 0 vv.bo
2 bx 0
3 0 0
3 vo.bp 0
[5 rows x 2 columns]
In [7]: df.convert_objects(convert_numeric=True)
Out[7]:
T_Opp T_Eval
uniq_epoch
1 0 0
1 0 NaN
2 NaN 0
3 0 0
3 NaN 0
[5 rows x 2 columns]
In [8]: df.convert_objects(convert_numeric=True).dtypes
Out[8]:
T_Opp float64
T_Eval float64
dtype: object
In [9]: df.convert_objects(convert_numeric=True).fillna(1)
Out[9]:
T_Opp T_Eval
uniq_epoch
1 0 0
1 0 1
2 1 0
3 0 0
3 1 0
[5 rows x 2 columns]
谢谢你的洞察力!我更新到Pandas 0.13.1,并按预期转换_对象函数。(不幸的是,使用drop_副本会导致代码的其他部分出现问题)。仅供任何人参考。谢谢你的洞察力!我更新到Pandas 0.13.1,并按预期转换_对象函数。(不幸的是,使用drop_副本会导致代码的其他部分出现问题)。这只是一个供任何人参考的帖子。
uniq_epoch T_Opp T_Eval
1 0 0
1 0 1
2 1 0
3 0 0
3 1 0
...
In [5]: df = read_csv(StringIO(data),sep='\s+',index_col=0)
In [6]: df
Out[6]:
T_Opp T_Eval
uniq_epoch
1 0 0
1 0 vv.bo
2 bx 0
3 0 0
3 vo.bp 0
[5 rows x 2 columns]
In [7]: df.convert_objects(convert_numeric=True)
Out[7]:
T_Opp T_Eval
uniq_epoch
1 0 0
1 0 NaN
2 NaN 0
3 0 0
3 NaN 0
[5 rows x 2 columns]
In [8]: df.convert_objects(convert_numeric=True).dtypes
Out[8]:
T_Opp float64
T_Eval float64
dtype: object
In [9]: df.convert_objects(convert_numeric=True).fillna(1)
Out[9]:
T_Opp T_Eval
uniq_epoch
1 0 0
1 0 1
2 1 0
3 0 0
3 1 0
[5 rows x 2 columns]