我想从Name
中提取一个子字符串,并将其添加到Address
前面,但是cat
默认情况下将其添加到末尾。
我的数据:
Name | Address
Eleanor A. Martin #/222 Rhapsody | Street 32601 Florida
Ann K. Wagner | 3071 Half and Half Drive Hialeah FL 33012
我的代码:
df = pd.DataFrame([['Eleanor A. Martin #/222 Rhapsody ','Street 32601 Florida'],['Ann K. Wagner','3071 Half and Half Drive Hialeah FL 33012']],columns=['Name','Address'])
df['Address'] = df['Address'].str.cat(df['Name'].str.extract(r'#/(.*)'), sep=' ', na_rep = '').str.strip()
当前结果:
Name | Address
Eleanor A. Martin #/222 Rhapsody | Street 32601 Florida 222 Rhapsody
Ann K. Wagner | 3071 Half and Half Drive Hialeah FL 33012
期望的结果:
Name | Address
Eleanor A. Martin #/222 Rhapsody | 222 Rhapsody Street 32601 Florida
Ann K. Wagner | 3071 Half and Half Drive Hialeah FL 33012
这在我的集合中不起作用(弄乱了不同的行)
df['Address'] = df['Name'].str.extract(r'#/(.*)') + " " + df['Address']
如何将 Name
中的子字符串添加到 Address
中的字符串前面?
最佳答案
首先为 Series.str.extract
中的 Series
添加参数 expand=False
,添加分隔符并将缺失值替换为空字符串,最后添加第二列:
df['Address'] = (df['Name'].str.extract(r'#/(.*)', expand=False).add(" ").fillna('') +
df['Address'])
替代方案:
df['Address'] = ((df['Name'].str.extract(r'#/(.*)', expand=False) + " ").fillna('') +
df['Address'])
<小时/>
print (df)
Name \
0 Eleanor A. Martin #/222 Rhapsody
1 Ann K. Wagner
Address
0 222 Rhapsody Street 32601 Florida
1 3071 Half and Half Drive Hialeah FL 33012
关于python - 在 DataFrame 的开头而不是末尾附加子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55607272/