如何将str转换为pandas中的float

克林格勒手指

我正在尝试将数据集的字符串转换为浮点类型。这里有一些背景:

import pandas as pd
import numpy as np
import xlrd
file_location = "/Users/sekr2/Desktop/Jari/Leistungen/leistungen2_2017.xlsx"
workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_index(0)

df = pd.read_excel("/Users/.../bla.xlsx")

df.head()

    Leistungserbringer Anzahl Leistung     AL      TL      TaxW    Taxpunkte
 0  McGregor Sarah  12  'Konsilium'     147.28  87.47   KVG     234.75
 1  McGregor Sarah  12  'Grundberatung' 47.00   67.47   KVG     114.47
 2  McGregor Sarah  12  'Extra 5min'    87.28   87.47   KVG     174.75
 3  McGregor Sarah  12  'Respirator'    147.28  102.01  KVG     249.29
 4  McGregor Sarah  12  'Besuch'        167.28  87.45   KVG     254.73

为了继续进行此工作,我需要找到一种创建新列的方法:df['Leistungswert'] = df['Taxpunkte'] * df['Anzahl'] * df['TaxW']

TaxW为每个条目显示字符串“ KVG”。我从数据中知道'KVG'= 0.89。我试图将字符串转换为浮点数遇到了麻烦。我不能只创建一个带有float类型的新列,因为此代码应可用于其他输入。在TaxW列中,大约有7个具有所有不同值的不同条目。

感谢您提供有关此问题的所有信息。

KVG = 0.92

cs95

假设'KVG'不是唯一可能的字符串值TaxW,您应该将字符串映射存储到等效的浮点数,如下所示:

map_ = {'KVG' : 0.89, ... } # add more fields here 

然后,您可以使用Series.map

In [424]: df['Leistungswert'] = df['Taxpunkte'] * df['Anzahl'] * df['TaxW'].map(map_); df['Leistungswert']
Out[424]: 
0    2507.1300
1    1222.5396
2    1866.3300
3    2662.4172
4    2720.5164
Name: Leistungswert, dtype: float64

另外,您可以使用df.transform

In [435]: df['Leistungswert'] = df.transform(lambda x: x['Taxpunkte'] * x['Anzahl'] * map_[x['TaxW']], axis=1); df['Lei
     ...: stungswert']
Out[435]: 
0    2507.1300
1    1222.5396
2    1866.3300
3    2662.4172
4    2720.5164
Name: Leistungswert, dtype: float64

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章