假设我有三个列表
listA = ['a','b','c', 'd']
listP = ['p', 'q', 'r']
listX = ['x', 'z']
因此数据帧将具有4 * 3 * 2 = 24行。 现在,解决此问题的最简单方法是:
df = pd.DataFrame(columns=['A','P','X'])
for val1 in listA:
for val2 in listP:
for val3 in listX:
df.loc[<indexvalue>] = [val1,val2,val3]
现在在实际情况下,我将有大约80万行和12列(因此循环中有12个嵌套)。有什么办法可以更快地创建此数据框吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以使用itertools.product:
import pandas as pd
from itertools import product
listA = ['a', 'b', 'c', 'd']
listP = ['p', 'q', 'r']
listX = ['x', 'z']
df = pd.DataFrame(data=list(product(listA, listP, listX)), columns=['A','P','X'])
print(df.head(10))
输出
A P X
0 a p x
1 a p z
2 a q x
3 a q z
4 a r x
5 a r z
6 b p x
7 b p z
8 b q x
9 b q z