用列表填充数据框列,该列表对另一个列表中的每个项目重复

时间:2018-06-27 20:19:02

标签: python python-3.x pandas dataframe

我有两个要用于计算的数字列表,但它们的长度不同。

list_1 = [123,456,789,987]

list_2 = [321,654]

由于总共有4x2 = 8个组合,因此我想像这样输出它们:

       Calc_1                    Calc_2
Calc_of_list_1_num_1      Calc_of_list_2_num_1
Calc_of_list_1_num_2      Calc_of_list_2_num_1
Calc_of_list_1_num_3      Calc_of_list_2_num_1
Calc_of_list_1_num_4      Calc_of_list_2_num_1
Calc_of_list_1_num_1      Calc_of_list_2_num_2
Calc_of_list_1_num_2      Calc_of_list_2_num_2
Calc_of_list_1_num_3      Calc_of_list_2_num_2
Calc_of_list_1_num_4      Calc_of_list_2_num_2

我一直在为此苦苦挣扎,但我不确定该如何处理。

1 个答案:

答案 0 :(得分:0)

使用numpy的np.ufunc.outer

附加示例:

np.add.outer(list_1,list_2)

输出:

array([[ 444,  777],
       [ 777, 1110],
       [1110, 1443],
       [1308, 1641]])

要创建数据框:

pd.DataFrame(np.add.outer(list_1,list_2), columns=list_2, index=list_1)

输出:

      321   654
123   444   777
456   777  1110
789  1110  1443
987  1308  1641

对于乘法,请使用np.outer:

np.outer(list_1,list_2)

输出:

array([[ 39483,  80442],
       [146376, 298224],
       [253269, 516006],
       [316827, 645498]])

对于数据框:

pd.DataFrame(np.outer(list_1,list_2), columns=list_2, index=list_1)

输出:

        321     654
123   39483   80442
456  146376  298224
789  253269  516006
987  316827  645498