考虑一个包含不同长度的迭代的字典:
{'column_1': range(10),
'column_2': range(3),
'column_3': ['foo']}
我想创建一个包含这些条目的完整笛卡尔积的数据框。那就是:
column 1, column_2, column_3
0 0 'foo'
0 1 'foo'
0 2 'foo'
1 0 'foo'
1 1 'foo'
1 2 'foo'
...
9 2 'foo'
我怎么能在熊猫中做到这一点?也许使用collections
?
答案 0 :(得分:3)
对熊猫不太熟悉,但这可能有用:
d={'column_1': range(10),
'column_2': range(3),
'column_3': ['foo']}
import pandas as pd
from collections import OrderedDict
from itertools import product
od = OrderedDict(sorted(d.items()))
cart = list(product(*od.values()))
df = pd.DataFrame(cart,columns=od.keys())
print(df)
column_1 column_2 column_3
0 0 0 foo
1 0 1 foo
2 0 2 foo
3 1 0 foo
4 1 1 foo
5 1 2 foo
6 2 0 foo
7 2 1 foo
8 2 2 foo
9 3 0 foo
10 3 1 foo
11 3 2 foo
12 4 0 foo
13 4 1 foo
14 4 2 foo
15 5 0 foo
16 5 1 foo
17 5 2 foo
18 6 0 foo
19 6 1 foo
20 6 2 foo
21 7 0 foo
22 7 1 foo
23 7 2 foo
24 8 0 foo
25 8 1 foo
26 8 2 foo
27 9 0 foo
28 9 1 foo
29 9 2 foo