Pandas:使用itertools和扁平化列表创建玩具数据

2024-04-23 16:33:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个函数,它应该为熊猫生成玩具数据(分组和多索引的示例)。我的目标是生成可能重复几次的组(例如,在实验中表示条件)。我的尝试:

import itertools as it
import numpy as np
import pandas as pd

p = it.product([[4,5,6],[7,8,9]],[1,2,3])
p = list(p)
p

[([4, 5, 6], 1),
 ([4, 5, 6], 2),
 ([4, 5, 6], 3),
 ([7, 8, 9], 1),
 ([7, 8, 9], 2),
 ([7, 8, 9], 3)]

我希望只展平内部列表,但保留外部列表的结构(并去掉元组)。我的解决方案基于this SO post

^{pr2}$

我有两个问题。首先,有没有更简单的解决方案?第二,当我想最终创建一个pandas数据帧时,是否需要完成所有这些操作?数据帧应该如下所示:

pd.DataFrame(np.reshape(it, (len(p), 4)))

    0   1   2   3
0   4   5   6   1
1   4   5   6   2
2   4   5   6   3
3   7   8   9   1
4   7   8   9   2
5   7   8   9   3

Tags: 数据函数import示例目标pandas列表as
1条回答
网友
1楼 · 发布于 2024-04-23 16:33:50

选项1:

In [249]: pd.DataFrame([np.concatenate(t)
                        for t in it.product([[4,5,6],[7,8,9]],[[1],[2],[3]])])
Out[249]:
   0  1  2  3
0  4  5  6  1
1  4  5  6  2
2  4  5  6  3
3  7  8  9  1
4  7  8  9  2
5  7  8  9  3

方案2:纯熊猫解决方案:

^{pr2}$

相关问题 更多 >