如何在Python Pandas中将字符串插入特定列值?

4

I have the following dataframe.

import pandas as pd
data=['ABC1','ABC2','ABC3','ABC4']
data = pd.DataFrame(data,columns=["Column A"])



    Column A
0   ABC1
1   ABC2
2   ABC3
3   ABC4

如何在数据的A列中插入“-ABC”?
输出:
  Column A
0   ABC-1
1   ABC-2
2   ABC-3
3   ABC-4

4
你实际的问题肯定不会这么简单...你能提供一个更具代表性的、更加详实的 [mcve](最小完备可复现例)来描述你的数据吗?解决方案是用带反向引用的 str.replace 函数,但对于你实际的数据可能不适用。 - cs95
替换(r'(ABC)', r'\1-') - cs95
3个回答

3

使用replace方法作为正则表达式,再使用inplace方法使其成为数据框的永久解决方案是最简单的解决方法。

>>> data['Column A'].replace(['ABC'], 'ABC-', regex=True, inplace=True)
print(data)
  Column A
0    ABC-1
1    ABC-2
2    ABC-3
3    ABC-4

我不知道为什么有人会对这个解决方案进行负评,有什么原因吗? - Karn Kumar

3
一种可能的解决方案是
data['Column A'] = data['Column A'].str[:-1] + '-' + data['Column A'].str[-1]
print (data)
#  Column A
#0    ABC-1
#1    ABC-2
#2    ABC-3
#3    ABC-4

2

这里有一个方法,只假设要在数字前添加连字符的数字位于末尾:

df['ColumnA'].str.split('([A-z]+)(\d+)').str.join('-').str.strip('-')

0    ABC-1
1    ABC-2
2    ABC-3
3    ABC-4

另一个例子:
df = pd.DataFrame({'ColumnA':['asf1','Ads2','A34']})

将会提供:

df['ColumnA'].str.split('([A-z]+)(\d+)').str.join('-').str.strip('-')

0    asf-1
1    Ads-2
2     A-34

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接