我有两个数据列表,它们是: 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 回答
不负相思意
TA贡献1777条经验 获得超10个赞
您可以使用外积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
添加回答
举报
0/150
提交
取消