我有一个 Python 数据框,其中包含一个名为“SEGMENT”的列。我想将该列分成三列。请查看我想要的以黄色突出显示的输出。
下面是我试过的代码。不幸的是,我什至无法让第一个替换语句起作用。 : 不会被 - 取代。任何帮助是极大的赞赏!
df_stack_ranking['CURRENT_AUM_SEGMENT'] = df_stack_ranking['CURRENT_AUM_SEGMENT'].replace(':', '-')
s = df_stack_ranking['CURRENT_AUM_SEGMENT'].str.split(' ').apply(Series, 1).stack()
s.index = s.index.droplevel(-1)
s.name = 'SEGMENT'
df_stack_ranking.join(s.apply(lambda x: Series(x.split(':'))))
最佳答案
设置
df = pd.DataFrame({'SEGMENT': {0: 'Hight:33-48', 1: 'Hight:33-48', 2: 'Very Hight:80-88'}})
df
Out[17]:
SEGMENT
0 Hight:33-48
1 Hight:33-48
2 Very Hight:80-88
解决方案
使用 split 将列分成 3 个部分,然后展开以创建一个新的 DF。
df.SEGMENT.str.split(':|-',expand=True)\
.rename(columns=dict(zip(range(3),\
['SEGMENT','SEGMENT RANGE LOW','SEGMENT RANGE HIGH'])))
Out[13]:
SEGMENT SEGMENT RANGE LOW SEGMENT RANGE HIGH
0 Hight 33 48
1 Hight 33 48
2 Very Hight 80 88
关于Python:使用 Lambda 将字符串字段拆分为 3 个单独的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44298024/