修改pandas data-frame中选择子字符串的列

时间:2017-11-14 04:31:19

标签: regex python-3.x pandas

这是我的熊猫数据框架。我想通过提取a,b,c,d来修改第一列(System)的值。如何在python

中完成
 System       mem
/vol/a/        10   
/vol/b/        20   
/vol/c/        30   
/vol/d/        40

4 个答案:

答案 0 :(得分:3)

您可以使用.str.extract

In [11]: df.System.str.extract("/vol/(.*?)/", expand=False)
Out[11]:
0    a
1    b
2    c
3    d
Name: System, dtype: object

答案 1 :(得分:3)

可以通过多种方式完成,这里有一个

df['System'] = df['System'].str.split('/').str[-2]

    System  mem
0   a       10
1   b       20
2   c       30
3   d       40

选项2:

df['System'] = df.System.str.replace('[/vol/|/]', '')

Andy Hayden已经介绍了str.extract

答案 2 :(得分:2)

使用str.extract:

import pandas as pd

df = pd.DataFrame({'System': ['/vol/a/', '/vol/b/', '/vol/c/', '/vol/d/'], 'mem': [10, 20, 30, 40]})

df['new_column'] = df['System'].str.extract(r'([^/]+)/?$')
print(df)

这会产生

    System  mem new_column
0  /vol/a/   10          a
1  /vol/b/   20          b
2  /vol/c/   30          c
3  /vol/d/   40          d

答案 3 :(得分:0)

使用 <div *ngIf = "tran.tranType == 'R'; else elsetag"> Redeem </div> <ng-template #elsetag> <div> Earn </div> <ng-template> ,你可以在前面拥有尽可能多的东西。

rsplit