我有两个数组A
和B
其中包含一系列数字。如何提高从Pandas中的数组创建数据帧
我的目标是创建一个数据帧具有以下结构:对BI的每个元素 想对应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
。
我能够实现我通过以下方式目标:ZZZ
但如上所示计算
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)
列。
我写的代码工作正常,但当我增加a,b,c,d
的值时,它非常慢。
有没有更优雅的方式来实现我的目标?我想避免嵌套for循环,它应该是一个比我的显然更有效的方式。
您可以使用[拉链](HTTPS合并列表://文档(A,B),或者你可以直接在pandas中连接列df.XXX.astype(str)+ df.YYY.astype(str)来创建新的专栏。 – BMW
嗯我从来没有听说过它...我现在就去看看 –