在Pandas数据框中是否有一种方法可以从一列长度为2个字符的字符串中提取单词?
例如:
新加坡SG Jalan ID Indonesia 马来西亚MY
结果将是
SG ID MY
答案 0 :(得分:3)
str.findall
regex与str.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