Pandas更改了多列的数据类型

时间:2018-04-16 17:36:23

标签: python pandas dataframe

我试图将某些列中的所有值转换为浮点美元金额,在预先存在的列中,它们之前有一个美元符号,但是,它们是包含整个美元金额的字符串数。这些列中的所有单元格的值都不是(NaN)。

我从读取.csv文件导入此文件,该文件已分配给变量道具,我希望将值从以下列转换为浮点数:土地价值,改善价值',总价值,和销售价格

此时我的代码是

#MULTIPLIZIEREN

class Multiplizieren:
    def __init__(self,name):
    self.name = name
    self.a = rdm.randint(5,20)
    self.b = rdm.randint(4,50)
    self.c = rdm.randint(2,200)

def punktstrich(self):
    finished = False
    while not finished:
        c = self.a*self.b-self.c
        if c < 0 or c > 100:
            print('OUT OF RANGE')
            return
        else:
            print(self.a, '*', self.b, '-', self.c, '=', self.a*self.b-self.c)
            finished = True
            return c

我如何将这4列中的值转换为浮点美元金额?

1 个答案:

答案 0 :(得分:0)

这应该可以解决大多数情况。删除带有替换的美元符号,然后pandas.to_numeric()将其转换为浮点数。任何不是数字的内容都会被强制转移到np.NaN,并为您提供dtype: float64

import pandas as pd
import numpy as np
df = pd.DataFrame({'Land Value': ['$10.31', '$17.81', np.NaN, 'NaN', None, '$ 102.13']})    

pd.to_numeric(df['Land Value'].str.replace('$', ''), errors='coerce')
#0     10.31
#1     17.81
#2       NaN
#3       NaN
#4       NaN
#5    102.13
#Name: Land Value, dtype: float64

请确保最后将其分配回来。

col_list = ['Land Value', 'Improvement Value', 'Total Value', 'Sale Price']
for item in col_list:
    props[item] = pd.to_numeric(props[item].str.replace('$', ''), errors='coerce')