仅提取带有2个字符Pandas系列的单词

时间:2018-03-05 07:25:32

标签: python pandas

在Pandas数据框中是否有一种方法可以从一列长度为2个字符的字符串中提取单词?

例如:

  

新加坡SG   Jalan ID Indonesia   马来西亚MY

结果将是

  

SG ID MY

4 个答案:

答案 0 :(得分:3)

str.findall regexstr.join使用{{3}}:

df['B'] = df['A'].str.findall(r'\b[a-zA-Z]{2}\b').str.join(' ')
print (df)
                                             A         B
0  Singapore SG Jalan ID Indonesia Malaysia MY  SG ID MY
1                          Singapore SG Jalan         SG
2                        Singapore Malaysia MY        MY

答案 1 :(得分:1)

这可能会有所帮助。

df["short"] = df["test"].apply(lambda x: " ".join([i for i in x.split() if len(i) == 2]))

<强>输出:

                                          test     short
0  Singapore SG Jalan ID Indonesia Malaysia MY  SG ID MY

答案 2 :(得分:1)

您可以使用:

from django.db import connection
cursor = connection.cursor()
cursor.execute("
    begin
      sys.dbms_scheduler.create_schedule(schedule_name   => 'U6_GB.SCHED_DAILY_7_30',
                                         start_date      => to_date(null),
                                         repeat_interval => 'Freq=Daily;ByHour=7;ByMinute=30',
                                         end_date        => to_date(null),
                                         comments        => '');
    end;
")

输出:

df = {'a': ['Singapore SG Jalan ID', 'SG Jalan ID Indonesia Malaysia MY'] }
df = pd.DataFrame(data=df)

                                   a
0              Singapore SG Jalan ID
1  SG Jalan ID Indonesia Malaysia MY

df['a1'] = df['a'].str.findall(r'\b\S\S\b')

答案 3 :(得分:1)

使用pd.Series.str.replace

df.assign(B=df.A.str.replace('(\s*\w{3,}\s*)+', ' ').str.strip())

                                             A         B
0  Singapore SG Jalan ID Indonesia Malaysia MY  SG ID MY
1                           Singapore SG Jalan        SG
2                        Singapore Malaysia MY        MY