从itertools produ创建数据帧

2024-10-01 17:38:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个清单:

a = [1,2,3]
b = [4,5,6]

我想创建一个dataframe,(a,b)的每一个组合都会生成一个dataframeX,然后我选择X的最大值,并生成包含ab元素的行/列。在

^{pr2}$

输出数据帧的列应为a,行应为b,值应为x\u value。在

    1   2   3
4           
5           
6           

Tags: 数据元素dataframevaluepr2dataframex
3条回答

通过使用numpy和broadcasting可以避免使用itertools.product,同时实现相同的功能:

a = [1,2,3]
b = [4,5,6]
arr = np.array(a).reshape(-1, 1) + np.array(b).reshape(1, -1)
df = pd.DataFrame(arr, columns=a, index=b)

IIUC公司

df=pd.DataFrame(columns=a,index=b)
df.apply(lambda x : x.index+x.name)
Out[189]: 
   1  2  3
4  5  6  7
5  6  7  8
6  7  8  9

IIUC,您想知道如何从(i, j, x)值的列表转到一个数据帧,其中i对应于列,j索引,x值:

例如,如果您有:

a = [1,2,3]
b = [4,5,6]
func = lambda i, j: i+j
result = [(i, j, func(i,j)) for i, j in itertools.product(a, b)]
print(result)
#[(1, 4, 5),
# (1, 5, 6),
# (1, 6, 7),
# (2, 4, 6),
# (2, 5, 7),
# (2, 6, 8),
# (3, 4, 7),
# (3, 5, 8),
# (3, 6, 9)]

将其转换为数据帧的一种方法是使用collections.defaultdict

^{pr2}$

相关问题 更多 >

    热门问题