我有两个数据列表,即:
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的大小非常大,因此效率问题增加了。
有什么聪明有效的方法可以解决此问题?任何建议将不胜感激
提前谢谢!
答案 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