我有一个 pandas 数据框,其中包含门牌号和后缀的列。门牌号和后缀由“-”分隔,尽管许多后缀也包含“-”。
我试过这个:
df house_nr(x):
y = x['house_nr'].split('-', maxsplit = 1)
return y
df['suffix'] = df.apply(house_nr, axis=1)
出现以下错误:
KeyError: ('house_nr', 'occurred at index 0')
经过一些其他尝试,我已经开始工作了:
df2 = pd.DataFrame(df['house_nr'].str.split('-',1).tolist(),columns = ['house-number','suffix'])
然后我加入数据框,但我认为这个解决方案不是很好或 pythonic。
设置
df = pd.DataFrame({'house_nr': ['123-Rd-thing', '456-House', '567-House-thing']})
house_nr
0 123-Rd-thing
1 456-House
2 567-House-thing
使用列表理解和拆分
,这将比 pandas 字符串方法更快:
pd.DataFrame([i.split('-', 1) for i in df.house_nr], columns=['num', 'suffix'])
num suffix
0 123 Rd-thing
1 456 House
2 567 House-thing
我是一名优秀的程序员,十分优秀!