2017-05-29 10 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

タスクを複雑にし、 「輸入再」 を使用する場合:メートルCSVファイルと'...'を得るには、その対処する最も簡単な方法は、'...'na_valuesパラメータを使用して、NaN値であることをPandas.read_csvを指示するだろう^。\ 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

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) 
関連する問題