我有一个熊猫数据框架,列中包含房屋编号和后缀。虽然许多后缀也包含'-‘,但房屋号和后缀由'-’分隔开。
我试过这样做:
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'])然后我加入了dataframe,但是我不认为这个解决方案是非常好的或者是仿生的。
发布于 2018-08-15 17:51:20
设置
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使用列表理解和split,这将比熊猫字符串方法更快:
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发布于 2018-08-15 17:59:00
使用Numpy的defchararray模块
from numpy.core.defchararray import split
a = df.house_nr.values.astype(str)
pd.DataFrame(
split(a, '-', 1).tolist(),
df.index, ['house-number', 'suffix'])
house-number suffix
0 123 Rd-thing
1 456 House
2 567 House-thing同理异构
from numpy.core.defchararray import split
cols = ['house-number', 'suffix']
a = df.house_nr.values.astype(str)
pd.DataFrame(dict(zip(cols, zip(*(split(a, '-', 1))))), df.index)
house-number suffix
0 123 Rd-thing
1 456 House
2 567 House-thing从@ From 3483203借用的安装程序
(我会还给你的)
df = pd.DataFrame({'house_nr': ['123-Rd-thing', '456-House', '567-House-thing']})发布于 2018-08-15 17:50:06
对expand=True和n=1参数使用str.split。expand=True为您的拆分创建新列,n=1将拆分限制在-的第一次出现
>>> df
col
0 5-suffix-1
1 6-suffix-2
df[['house_number','suffix']] = df['col'].str.split('-', n=1, expand=True)
>>> df
col house_number suffix
0 5-suffix-1 5 suffix-1
1 6-suffix-2 6 suffix-2https://stackoverflow.com/questions/51863837
复制相似问题