我正在尝试从 pandas 数据框中的列中删除结尾的“OF”。我尝试了 'rstrip'、'split',但它也删除了 'O' 和 'F',我只需要删除 'OF'。怎么做?不确定为什么 rstrip 在我明确传递了“OF”时删除了“O”和“F”。抱歉,如果之前有人问过这个问题,我只是找不到。谢谢。
示例数据:
l1 = [1,2,3,4]
l2 = ['UNIVERSITY OF CONN. OF','ONTARIO','UNIV. OF TORONTO','ALASKA DEPT.OF']
df = pd.DataFrame({'some_id':l1,'org':l2})
df
some_id org
1 UNIVERSITY OF CONN. OF
2 ONTARIO
3 UNIV. OF TORONTO
4 ALASKA DEPT.OF
尝试过:
df.org.str.rstrip('OF')
# df.org.str.split('OF')[0] # Not what I am looking for
结果:
0 UNIVERSITY OF CONN. # works
1 ONTARI # 'O' was removed
2 UNIV. OF TORONT # 'O' was removed
3 ALASKA DEPT. # works
需要的最终输出:
0 UNIVERSITY OF CONN.
1 ONTARIO
2 UNIV. OF TORONTO
3 ALASKA DEPT.
最佳答案
你可以试试这个正则表达式:
df.org = df.org.str.replace('(OF)$','')
其中 $
表示字符串的结尾。或者
df.org.str.rstrip('(OF)')
似乎按预期工作。
输出:
0 UNIVERSITY OF CONN.
1 ONTARIO
2 UNIV. OF TORONTO
3 ALASKA DEPT.
Name: org, dtype: object
关于Python/Pandas 从结尾删除特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57256340/