如何解决Python:在Python数据框中创建包含列表作为其值的两列的组合
我有一个数据框,该数据框的列中有列表,并且我试图找到一种找到两个列表组合的方法。关键是ID必须映射到正确的组合-
df = pd.DataFrame([[1,['a','b','c'],['l','m']],[2,['d','e','f'],['n','o']]],columns = ['id','col1','col2'])
结果应为-
id col1 col2
----------------
0 1 a l
1 1 a m
2 1 b l
3 1 b m
4 1 c l
5 1 c m
6 2 d n
7 2 d o
8 2 e n
9 2 e o
10 2 f n
11 2 f o
我是python的新手,曾尝试探索itertools库及其产品功能,但我不明白如何确切地获得这种输出格式。
解决方法
结合列表理解使用itertools.product
构建组合:
print (pd.DataFrame([(a,*x) for a,b,c in df.to_numpy()
for x in product(b,c)],columns=df.columns))
id col1 col2
0 1 a l
1 1 a m
2 1 b l
3 1 b m
4 1 c l
5 1 c m
6 2 d n
7 2 d o
8 2 e n
9 2 e o
10 2 f n
11 2 f o
或者,如果您不想为列明确地使用a
,b
,c
,d
,则可以使用解压缩:
from itertools import product,chain
pd.DataFrame(chain.from_iterable(product([a],*rest)
for a,*rest in df.to_numpy()),columns=df.columns
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。