首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第一次出现“-”的分裂列

第一次出现“-”的分裂列
EN

Stack Overflow用户
提问于 2018-08-15 17:46:38
回答 3查看 653关注 0票数 3

我有一个熊猫数据框架,列中包含房屋编号和后缀。虽然许多后缀也包含'-‘,但房屋号和后缀由'-’分隔开。

我试过这样做:

代码语言:javascript
复制
df house_nr(x):
    y = x['house_nr'].split('-', maxsplit = 1)
    return y

df['suffix'] = df.apply(house_nr, axis=1)

得到以下错误:

代码语言:javascript
复制
KeyError: ('house_nr', 'occurred at index 0')

经过一些其他的尝试,我已经成功了:

代码语言:javascript
复制
df2 = pd.DataFrame(df['house_nr'].str.split('-',1).tolist(),columns = ['house-number','suffix'])

然后我加入了dataframe,但是我不认为这个解决方案是非常好的或者是仿生的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-15 17:51:20

设置

代码语言:javascript
复制
df = pd.DataFrame({'house_nr': ['123-Rd-thing', '456-House', '567-House-thing']})

代码语言:javascript
复制
          house_nr
0     123-Rd-thing
1        456-House
2  567-House-thing

使用列表理解和split,这将比熊猫字符串方法更快:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2018-08-15 17:59:00

使用Numpy的defchararray模块

代码语言:javascript
复制
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

同理异构

代码语言:javascript
复制
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借用的安装程序

(我会还给你的)

代码语言:javascript
复制
df = pd.DataFrame({'house_nr': ['123-Rd-thing', '456-House', '567-House-thing']})
票数 2
EN

Stack Overflow用户

发布于 2018-08-15 17:50:06

expand=Truen=1参数使用str.splitexpand=True为您的拆分创建新列,n=1将拆分限制在-的第一次出现

代码语言:javascript
复制
>>> 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-2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51863837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档