tutorial index from example empty data create python string pandas dataframe type-conversion

index - pandas python



Cómo convertir str a flotar en pandas (2)

Solución alternativa que utiliza map_ mapping de @COLDSPEED:

In [237]: df.assign(TaxW=df[''TaxW''].map(map_)) / .eval("Leistungswert = Taxpunkte * Anzahl * TaxW", inplace=False) Out[237]: Leistungserbringer Anzahl Leistung AL TL TaxW Taxpunkte Leistungswert 0 McGregor Sarah 12 Konsilium 147.28 87.47 0.89 234.75 2507.1300 1 McGregor Sarah 12 Grundberatung 47.00 67.47 0.89 114.47 1222.5396 2 McGregor Sarah 12 Extra 5min 87.28 87.47 0.89 174.75 1866.3300 3 McGregor Sarah 12 Respirator 147.28 102.01 0.89 249.29 2662.4172 4 McGregor Sarah 12 Besuch 167.28 87.45 0.89 254.73 2720.5164

Estoy tratando de convertir una cadena de mi conjunto de datos en un tipo de letra flotante. Aquí algo de contexto:

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

Para seguir trabajando en esto, necesito encontrar una manera de crear una nueva columna: df[''Leistungswert''] = df[''Taxpunkte''] * df[''Anzahl''] * df[''TaxW''] .

TaxW muestra la cadena ''KVG'' para cada entrada. Sé por los datos que ''KVG'' = 0.89. He golpeado una pared con tratar de convertir la cuerda en un flotador. No puedo simplemente crear una nueva columna con el tipo de letra flotante porque este código debería funcionar con más entradas. En la columna TaxW, hay aproximadamente 7 entradas diferentes con todos los valores diferentes.

Estoy agradecido por toda la información sobre este asunto.


Suponiendo que ''KVG'' no es el único valor de cadena posible en TaxW , debe almacenar un mapeo de cadenas en su equivalente flotante, como este:

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

Entonces, puedes usar 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

Alternativamente, puede usar 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