问题描述
我有一个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'],})
1楼
您可以使用矢量化字符串方法以几种不同的方式执行此操作。
一种方法是使用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]
)并用替换字符串替换它。
如果没有给出替换字符串作为第三个参数,则将使用空字符串''
。
2楼
df.beta = df.beta.str[0:1] + df.beta.str[2:];
这应该工作。
如果你想要一些解释;
问我。