首页 文章

智能方法将两个列表相乘以生成python数据帧[重复]

提问于
浏览
4

这个问题在这里已有答案:

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

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

我想要的输出是:

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]]

我目前正在做的是:

for aa in a:

    counter = 0

    df = pd.DataFrame()

    while counter<len(b): 

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

        counter+=1

看来,效率肯定是低效的 .

在我的实际应用中,a和b的大小非常大,因此效率问题上升 .

任何智能有效的方法来解决这个问题?任何建议将不胜感激

先感谢您!

1 回答

  • 4

    您可以使用外部产品 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
    

相关问题