很抱歉,有什么事情还不够清楚 首先,我已将Outlook电子邮件数据导出到csv文件 此CSV文件包含称为subject,from,to .....等的列 我现在需要的全部是要用包含该行的列中值的Sub String替换此列Subject中的每一行中的值 例如: 我在主题中排了一行,并充满了像这样的数据:
LDELE44328 SSV report_R4_42313 (Delta)
LDELM44358 ....................etc
LDELS44258 ....................etc
LSINE44328 SSV report_R4_42313 (Delta)
LSINI44328 ....................etc
LSINS44328 ....................etc
LCAIS12345 ....................etc
LCAIN12345.....................etc
我们注意到我要更改的字符串包含5个字符和5个数字
这是我想使用的最简单的代码
data2 = pd.read_csv (r'C:\Users\mwx707566\Desktop\test.CSV', usecols=
['Subject','Body', 'From: (Name)', 'To: (Name)' ])
pd.set_option('display.max_rows', None)
data2.columns = data2.columns.str.replace(' ','')
data2['x'] = data2['Subject'].str.extract(pat='^L(DEL|SIN|CAI)')
data2['x'] = data2['Subject'].str[1:4]
print(data2)
data2.Subject
data2.Subject输出:
0 LDELE44328 SSV report_R4_42313 (Delta)
1 SSV Progress Tracker @ 6 May-2019
2 SSV Progress Tracker @ 6 May-2019
3 SSV Progress Tracker @ 5 May-2019
4 SSV Progress Tracker @ 5 May-2019
5 RE: LDELE14029 SSV report_R3_42312(Delta)
6 RE: LDELE14029 SSV report_R3_42312(Delta)
7 RE: LDELW14978 SSV report_R3_42322(Delta)
8 RE: LDELW14978 SSV report_R3_42322(Delta)
9 RE: LDELE34167 SSV report_R3_42252 (Delta)
10 LDELE54006 SSV report_R3_42202 (Delta)
11 LCAIN10111 SSV Report_R1_41091 ( New Cairo )
12 LCAIN10111 SSV Report_R1_41091 ( New Cairo )
13 LCAIN10111 SSV Report_R1_41091 ( New Cairo )
我想要这样的输出:
0 LDELE44328
5 LDELE14029
6 LDELE14029
7 LDELW14978
8 LDELW14978
9 LDELE34167
我们注意到有一个包含三个静态子字符串的三个静态子字符串CAI,SIN,DEL
那么,如何创建这种情况下的方法,我想将所有这些行替换为同一行中的那些子字符串?
答案 0 :(得分:0)
使用str.extract
:
x = df['col'].str.extract(pat='(L(?:DEL|CAI|SIN).\d{5})').dropna()
print(x)
输出:
0
0 LDELE44328
5 LDELE14029
6 LDELE14029
7 LDELW14978
8 LDELW14978
9 LDELE34167
10 LDELE54006
11 LCAIN10111
12 LCAIN10111
13 LCAIN10111