Python 熊猫:为什么在不同的条件下我会得到不同的格式编号?
我有一个熊猫数据帧Python 熊猫:为什么在不同的条件下我会得到不同的格式编号?,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我有一个熊猫数据帧df,它包含nan和字符串\u MISSING。我想将值nan和\u MISSING设置为-1 df A B 0 4 _MISSING 1 NaN hello 2 3 tom 3 NaN _MISSING 这就是我正在做的: df.ix[df.A.isnull(), 'A'] = -1 df.ix[df.B == '_MISSING', 'B'] = -1 这就是结果 df A B 0 4
df
,它包含nan
和字符串\u MISSING
。我想将值nan
和\u MISSING
设置为-1
df A B
0 4 _MISSING
1 NaN hello
2 3 tom
3 NaN _MISSING
这就是我正在做的:
df.ix[df.A.isnull(), 'A'] = -1
df.ix[df.B == '_MISSING', 'B'] = -1
这就是结果
df A B
0 4 -1
1 -1.0 hello
2 3 tom
3 -1.0 -1
在哪里
熊猫将带有
NaN
的任何整数列强制转换为浮点
>>> df = pd.DataFrame({'a':[1,2,np.nan], 'b':['_MISSING', 'HELLO','World']})
>>> df.ix[df.a.isnull(), 'a'] = -1
>>> type(df.a[0])
<class 'numpy.float64'>
您可以将
B
中的选定值替换为np.nan
,然后使用:
如果使用
read_csv
创建数据帧,可以传递参数“na_values=[''u MISSING']”。然后使用df.fillna(-1)确定最后一部分(浮点到int的转换)吗?我怀疑你只是捡起上一步放在那里的-1
。@MarkDickinson啊!我在它之后执行了df.ix[df.b=''u MISSING',b']=-1.0
,这显然不起作用。谢谢
>>> df = pd.DataFrame({'a':[1,2,np.nan], 'b':['_MISSING', 'HELLO','World']})
>>> df.ix[df.a.isnull(), 'a'] = -1
>>> type(df.a[0])
<class 'numpy.float64'>
>>> df.ix[df.b == '_MISSING', 'b'] = -1
>>> type(df.b[0])
<class 'int'>
>>> df.ix[df.b == '_MISSING', 'b'] = -1.0
>>> type(df.b[0])
<class 'float'>
import numpy as np
df.loc[df['B'] == '_MISSING', 'B'] = np.nan
df = df.fillna(-1)
print(df)
df A B
0 0 4.0 -1
1 1 -1.0 hello
2 2 3.0 tom
3 3 -1.0 -1