Teniendo en cuenta el marco de datos a continuación:
import pandas as pd
df = pd.DataFrame({'Ticker': ['EWZ US 05/29/20 P27', 'HSI US 12/30/20 C24800', 'TLT US 06/19/20 C225'],
'Market': ['US NYSE', 'US NYSE', 'HK HKSE']})
df
Necesito crear una nueva columna con todos los caracteres que aparecen antes del primer dígito en df['Ticker']
. Intento lo siguiente:
numbers = [0,1,2,3,4,5,6,7,8,9]
f = lambda x: len(df['Ticker'].split(numbers)) -1
df['Reduced_Ticker'] = df.apply(f, axis=1)
Pero recibo el siguiente error: 'Series' object has no attribute 'split'
. ¿Alguien puede ayudar? Resultado esperado:
Ticker | Market | Reduced_Ticker
EWZ US 05/29/20 P27 | US NYSE | EWZ US
HSI US 12/30/20 C24800 | US NYSE | HSI US
TLT US 06/19/20 C225 | HK HKSE | HK HKSE
2 respuestas
O, asumiendo que lo que proporcionó es una representación completa de su marco de datos, puede hacer algo con split()
(en el segundo espacio) y join()
:
df['Reduced_Ticker'] = df['Ticker'].apply(lambda a :" ".join(a.split(" ", 2)[:2]))
Ticker Market new Reduced_Ticker
0 EWZ US 05/29/20 P27 US NYSE EWZ US EWZ US
1 HSI US 12/30/20 C24800 US NYSE HSI US HSI US
2 TLT US 06/19/20 C225 HK HKSE TLT US TLT US
Tratar:
df['Reduced_Ticker'] = df['Ticker'].str.extract('^(\D+)')
Salida (espacio extra al final):
Ticker Market Reduced_Ticker
0 EWZ US 05/29/20 P27 US NYSE EWZ US
1 HSI US 12/30/20 C24800 US NYSE HSI US
2 TLT US 06/19/20 C225 HK HKSE TLT US
Para eliminar el espacio final, encadena con str.strip()
:
df['Ticker'].str.extract('^(\D+)')[0].str.strip()
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.