python里数据框拆分_将dataframe中的范围拆分(分解)为多行

本文介绍如何在Python中将DataFrame中的范围数据拆分成多行。通过使用np.r_、lambda函数和map解析选项列中的范围字符串,然后使用np.concatenate和pd.DataFrame.assign方法来扩展和更新数据框。
摘要由CSDN通过智能技术生成

我喜欢使用np.r_和{}

我知道这看起来一团糟,但情人眼里出西施。在def parse(o):

mm = lambda i: slice(min(i), max(i) + 1)

return np.r_.__getitem__(tuple(

mm(list(map(int, s.strip().split('-')))) for s in o.split(',')

))

r = df.Options.apply(parse)

new = np.concatenate(r.values)

lens = r.str.len()

df.loc[df.index.repeat(lens)].assign(Options=new)

Name Options Email

0 Bob 1 bob@email.com

0 Bob 2 bob@email.com

0 Bob 4 bob@email.com

0 Bob 5 bob@email.com

0 Bob 6 bob@email.com

2 Mary 1 mary@email.com

2 Mary 2 mary@email.com

3 Jane 1 jane@email.com

3 Jane 3 jane@email.com

3 Jane 4 jane@email.com

3 Jane 5 jane@email.com

说明np.r_接受不同的切片器和索引器并返回组合的数组。在

^{pr2}$

或者np.r_[slice(1, 2), slice(4, 7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值