我有一个DataFrame,其中包含一个包含中间首字母的名称列。我需要删除中间的首字母,这是字符串中的第二个字符。
df = pd.DataFrame({'alpha': ['1', '2', '3'],
'beta': ['JRLeparoux', 'BJHernandez,Jr.','SXBridgmohan'],})
以下是我的尝试:
def fixbadname(word):
filelist2= []
filelist = []
for elem in word:
filelist.append(elem)
for file in filelist:
file = file.replace(file[1],"")
filelist2.append(file)
return filelist2
df['beta'].apply(fixbadname)
这是所需的输出:
df = pd.DataFrame({'alpha': ['1', '2', '3'],
'beta': ['JLeparoux', 'BHernandez,Jr.','SBridgmohan'],})
答案 0 :(得分:4)
您可以使用矢量化字符串方法以多种不同方式执行此操作。
一种方法是使用slice_replace
:
>>> df['beta'] = df['beta'].str.slice_replace(1, 2)
>>> df
alpha beta
0 1 JLeparoux
1 2 BHernandez,Jr.
2 3 SBridgmohan
此方法选择字符串的切片(此处为切片[1:2]
)并将其替换为替换字符串。如果没有给出替换字符串作为第三个参数,则将使用空字符串''
。
答案 1 :(得分:3)
df.beta = df.beta.str[0:1] + df.beta.str[2:];
这应该工作。
如果你想要一些解释;问我。