将两个列表相乘以生成 python 数据框的智能方法

H.C*_*hoi 4 python list dataframe

我有两个数据列表,分别是:

 a = [1,1,1, 0,0,0]
 b = [9,8,7, 6,5,4]
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

df = [[9,9,9, 0,0,0],
       [8,8,8, 0,0,0],
       [7,7,7, 0,0,0],
       [6,6,6, 0,0,0],
       [5,5,5, 0,0,0],
       [4,4,4, 0,0,0]]
Run Code Online (Sandbox Code Playgroud)

我目前正在做的事情是这样的:

for aa in a:

    counter = 0

    df = pd.DataFrame()

    while counter<len(b): 

        df[counter] = pd.Series(b)*a[counter]

        counter+=1
Run Code Online (Sandbox Code Playgroud)

这看起来绝对是低效的。

在我的实际应用中,a和b的大小非常大,因此效率问题就出现了。

有什么聪明有效的方法来解决这个问题吗?任何建议将不胜感激

先感谢您!

Spg*_*tCd 5

您可以使用外部产品np.outer并使用结果初始化 pandas 数据框:

import numpy as np
import pandas as pd

a = [1,1,1, 0,0,0]
b = [9,8,7, 6,5,4]

pd.DataFrame(np.outer(b, a))

   0  1  2  3  4  5
0  9  9  9  0  0  0
1  8  8  8  0  0  0
2  7  7  7  0  0  0
3  6  6  6  0  0  0
4  5  5  5  0  0  0
5  4  4  4  0  0  0
Run Code Online (Sandbox Code Playgroud)