python - Pandas 子串

标签 python pandas

我有以下数据框:

     contract
 0   WTX1518X22
 1   WTX1518X20.5
 2   WTX1518X19
 3   WTX1518X15.5

我需要添加一个新列,其中包含第一列最后一个“X”之后的所有内容。所以结果是:

     contract        result
 0   WTX1518X22      22
 1   WTX1518X20.5    20.5
 2   WTX1518X19      19
 3   WTX1518X15.5    15.5

所以我想我首先需要找到最后一个“X”的字符串索引位置(因为字符串中可能有多个“X”)。然后获取一个子字符串,其中包含每行索引位置之后的所有内容。

编辑:

我已经成功地根据需要获取了“X”的索引位置:

df.['index_pos'] = df['contract'].str.rfind('X', start=0, end=None)

但我似乎仍然无法获得包含“X”后面的所有字符的新列。我正在尝试:

df['index_pos'] = df['index_pos'].convert_objects(convert_numeric=True)
df['result'] = df['contract'].str[df['index_pos']:]

但这只是给了我一个名为“结果”的空列。这很奇怪,因为如果我执行以下操作,它就会正常工作:

df['result'] = df['contract'].str[8:]

所以我只需要一种不硬编码“8”而是使用“index_pos”列的方法。有什么建议吗?

最佳答案

使用矢量化str.split分割字符串并将最后的分割转换为 float:

In [10]:
df['result'] = df['contract'].str.split('X').str[-1].astype(float)
df
​
Out[10]:
       contract  result
0    WTX1518X22    22.0
1  WTX1518X20.5    20.5
2    WTX1518X19    19.0
3  WTX1518X15.5    15.5

关于python - Pandas 子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33604931/

相关文章:

python - 数据框转换和字符串连接

Python - 获取线的周边区域(坐标)

python - 生成多个进程来写入不同的文件 Python

python - 设置 matplotlib 图形/轴属性的首选方法

Pandas :根据条件创建一个具有随机值的新列

python - 如果分割后存在,则提取(获取)第二个字符串,否则首先提取

python - 在 sklearn.cross_validation.cross_val_score 中使用 python pandas 时间戳

python - PILKit 无法导入 Python 图像库

javascript - 如何将 JavaScript 变量值保存在文本文件中?

python-3.x - 根据其他列将工作日添加到 pandas df 日期列