小编典典

从没有空格的字符串中删除重复的子字符串

all

给定一个看起来像这样的 Pandas DF 列:

问题

…我怎样才能把它变成这样:

XOM
ZM
AAPL
SOFI
NKLA
TIGR

尽管这些字符串的最大长度似乎是 4 个字符,但我不能依赖它,我希望能够拥有一个类似的字符串,ABCDEFGHIJABCDEFGHIJ并且仍然能够将其转换ABCDEFGHIJ为一列计算。最好不for循环/迭代行。


阅读 63

收藏
2022-06-25

共1个答案

小编典典

你可以像下面这样使用regex模式:r'\b(\w+)\1\b'str.extract

df = pd.DataFrame({'Symbol':['ZOMZOM', 'ZMZM', 'SOFISOFI', 
                             'ABCDEFGHIJABCDEFGHIJ', 'NOTDUPLICATED']})
print(df['Symbol'].str.extract(r'\b(\w+)\1\b'))

输出:

           0
0         ZOM
1          ZM
2        SOFI
3  ABCDEFGHIJ
4         NaN # <- from `NOTDUPLICATED`

解释:

  1. \b是一个词边界
  2. (w+)捕捉一个词
  3. \1参考(w+)第一组抓获
2022-06-25