如何在乘以和正确的.replace时避免重复

时间:2017-05-29 16:54:07

标签: python pandas numpy dataframe

我有一些数据,我想用...替换点Nan

但是,当我将列['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

如何使数字成倍增加?

3 个答案:

答案 0 :(得分:3)

请勿使用字符串,但请使用np.NaN

答案 1 :(得分: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

答案 2 :(得分: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)