2017-05-29 59 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)