基本上,我想通过创建所有可能的列组合,从一些现有数据框创建一个新数据框。这在SAS
(或expand.grid
中的R
函数)中非常简单:
create table combine_var as
select *
from var_1, avar_2;
但我不确定,Python中的平等方式是什么。例如,我的数据框如下所示:
var_1= pd.DataFrame.from_items([('val_1', [0.00789, 0.01448, 0.03157])])
var_2= pd.DataFrame.from_items([('val_2', [0.5, 1.0])])
我希望输出结果为:
val_1 val_2
0.00789 0.5
0.00789 1.0
0.01448 0.5
0.01448 1.0
0.03157 0.5
0.03157 1.0
答案 0 :(得分:4)
您可以使用docs cookbook中提到的expand_grid
:
def expand_grid(data_dict):
rows = itertools.product(*data_dict.values())
return pd.DataFrame.from_records(rows, columns=data_dict.keys())
expand_grid({'val_1': [0.00789, 0.01448, 0.03157], 'val_2' : [0.5, 1.0]})
In [107]: expand_grid({'val_1': [0.00789, 0.01448, 0.03157], 'val_2' : [0.5, 1.0]})
Out[107]:
val_1 val_2
0 0.00789 0.5
1 0.00789 1.0
2 0.01448 0.5
3 0.01448 1.0
4 0.03157 0.5
5 0.03157 1.0
修改强>
对于现有数据框,您首先需要从数据框中创建一个字典。您可以与question的答案之一合并为一个。案例:
expand_grid(dict(var_1.to_dict('list'), **var_2.to_dict('list')))
In [122]: expand_grid(dict(var_1.to_dict('list'), **var_2.to_dict('list')))
Out[122]:
val_1 val_2
0 0.00789 0.5
1 0.00789 1.0
2 0.01448 0.5
3 0.01448 1.0
4 0.03157 0.5
5 0.03157 1.0