微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 在pandas数据帧中将单元格拆分为多行

我有一个包含订单数据的数据框,每个订单都有多个包存储为逗号分隔的字符串[package& package_code]列

我想分割包数据并为每个包创建一行,包括其订单详细信息

以下是输入数据框的示例:

import pandas as pd
df = pd.DataFrame({"order_id":[1,3,7],"order_date":["20/5/2018","22/5/2018","23/5/2018"], "package":["p1,p2,p3","p4","p5,p6"],"package_code":["#111,#222,#333","#444","#555,#666"]})

Input Dataframe

这就是我想要实现的输出

Output


我怎么能用熊猫做到这一点?

解决方法:

这是使用numpy.repeat和itertools.chain的一种方法.从概念上讲,这正是您想要做的:重复一些值,链接其他值.建议用于少量列,否则基于堆栈的方法可能会更好.

import numpy as np
from itertools import chain

# return list from series of comma-separated strings
def chainer(s):
    return list(chain.from_iterable(s.str.split(',')))

# calculate lengths of splits
lens = df['package'].str.split(',').map(len)

# create new dataframe, repeating or chaining as appropriate
res = pd.DataFrame({'order_id': np.repeat(df['order_id'], lens),
                    'order_date': np.repeat(df['order_date'], lens),
                    'package': chainer(df['package']),
                    'package_code': chainer(df['package_code'])})

print(res)

   order_id order_date package package_code
0         1  20/5/2018      p1         #111
0         1  20/5/2018      p2         #222
0         1  20/5/2018      p3         #333
1         3  22/5/2018      p4         #444
2         7  23/5/2018      p5         #555
2         7  23/5/2018      p6         #666

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐