python - 熊猫:在第一个数字出现之前取所有字符
问题描述
考虑下面的数据框:
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
我需要创建一个新列,其中包含出现在第一个数字之前的所有字符df['Ticker']
。我正在尝试以下方法:
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)
但我收到以下错误:'Series' object has no attribute 'split'
。任何人都可以帮忙吗?预期输出:
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
解决方案
尝试:
df['Reduced_Ticker'] = df['Ticker'].str.extract('^(\D+)')
输出(末尾有多余的空格):
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
要删除尾随空格,请使用以下链接str.strip()
:
df['Ticker'].str.extract('^(\D+)')[0].str.strip()
推荐阅读
- java - Liquibase 库因 Micronaut 2.0 中的 Nullpointer 而失败
- vba - VBA:将带有输入变量的超链接添加到选定的单元格
- android - 如何使用 ADB 打开 MX Player?
- c# - C# .NET Core - 类的引用实例属性?
- python - 重定向意外 /bin/sh: 1:
- django - Django Gunicorn 不同类型的超时
- c++ - 后增量运算符是如何工作的。有一些例外吗?
- doctrine-orm - 教义不保存关系
- java - 我想将电子邮件验证发送到 firebase 中不用于注册帐户的另一个帐户
- android - Android 10 wifi连接无法到达网关