我有两个数组A
和B
,其中包含一系列数字。
我的目标是创建一个具有以下结构的数据框: 对于B的每个元素,我想对应A的所有值。
例如:
如果A = [0,2,5]
和B=[4,9,8]
我想获得以下对:0-4,0-9,0-8
,2-4,2-9,2-8
和5-4,5-9,5-8
。
我能够通过以下方式实现我的目标:
import pandas as pd
import numpy as np
a, b = 1, 10
c, d = -10, -1
step = 0.5
A = np.arange(a,b,1)+step
B = np.arange(c,d,1)
df = pd.DataFrame()
for j in B:
for i in A:
name = 'H'+str(int(np.abs(i)))+str(int(np.abs(j)))
dic = {'XXX':[i],'YYY':[j],'ZZZ':name}
df = pd.concat([df,pd.DataFrame(dic)],ignore_index=True)
列ZZZ
,但如上所示计算。
我编写的代码工作得很好但是当我增加a,b,c,d
的值时速度相当慢。
有更优雅的方式来实现我的目标吗?我想避免使用嵌套for循环,它应该是一种比我更有效的方法。
答案 0 :(得分:1)