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

我有两个数据列表,它们是:


 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 的大小非常大,因此效率问题上升。


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


慕尼黑的夜晚无繁华
浏览 179回答 1
1回答

不负相思意

您可以使用外积np.outer并使用结果初始化熊猫数据框:import numpy as npimport pandas as pda = [1,1,1, 0,0,0]b = [9,8,7, 6,5,4]pd.DataFrame(np.outer(b, a))&nbsp; &nbsp;0&nbsp; 1&nbsp; 2&nbsp; 3&nbsp; 4&nbsp; 50&nbsp; 9&nbsp; 9&nbsp; 9&nbsp; 0&nbsp; 0&nbsp; 01&nbsp; 8&nbsp; 8&nbsp; 8&nbsp; 0&nbsp; 0&nbsp; 02&nbsp; 7&nbsp; 7&nbsp; 7&nbsp; 0&nbsp; 0&nbsp; 03&nbsp; 6&nbsp; 6&nbsp; 6&nbsp; 0&nbsp; 0&nbsp; 04&nbsp; 5&nbsp; 5&nbsp; 5&nbsp; 0&nbsp; 0&nbsp; 05&nbsp; 4&nbsp; 4&nbsp; 4&nbsp; 0&nbsp; 0&nbsp; 0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python