乘以两个列表以构成python数据框的聪明方法

时间:2018-12-10 08:06:28

标签: python list dataframe

我有两个数据列表,即:

 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 个答案:

答案 0 :(得分:4)

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

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