首页 > 解决方案 > 用对另一个列表中的每个项目重复的列表填充 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

我一直在努力解决这个问题,我只是不知道如何处理它。

标签: pythonpython-3.xpandasdataframe

解决方案


使用 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

推荐阅读