2017-05-29 49 views
1

我有一些数据,我想用Nan替换点...如何避免重复时乘以正确.replace

但是,当我乘列['Cost']然后'Nan'也增加:

import pandas as pd 
import numpy as np 
df = pd.DataFrame([{'Name': 'Chris', 'Item Purchased': 'Sponge', 'Cost': 22.50}, 
        {'Name': 'Kevyn', 'Item Purchased': 'Kitty Litter', 'Cost': 2.50}, 
        {'Name': 'Filip', 'Item Purchased': 'Spoon', 'Cost': '...'}], 
        index=['Store 1', 'Store 1', 'Store 2']) 
df.replace ('...', 'Nan', inplace =True) 
df['Cost']*=10 
df 

如何使数字只是繁衍?

+0

如果复杂的任务,并使用 “进口重” “ ^。\ S +' 用这个你可以想到 –

回答

3

请勿使用字符串,而应使用np.NaN

1

的字符串可以成倍增加(好,不如说 “重复” 乘时):

>>> 'nan' * 10 
'nannannannannannannannannannan' 

但是你想要的 “数字” nan

>>> float('nan') * 10 
nan 

所以与float取代nan

>>> df.replace ('...', float('nan'), inplace =True) 
>>> df['Cost']*=10 
>>> df 
      Cost Item Purchased Name 
Store 1 225.0   Sponge Chris 
Store 1 25.0 Kitty Litter Kevyn 
Store 2 NaN   Spoon Filip 
0

如果您读取了您的数据米CSV文件,并得到'...',然后对付的最简单的方法是将指示Pandas.read_csv'...'NaN值,使用na_values参数:

na_vals = ['...', '', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN', '-NaN', '-nan', '1.#IND', '1.#QNAN', 'N/A', 'NA', 'NULL'] 
df = pd.read_csv(..., na_values=na_vals)