具有自己功能的Pandas交叉表

2024-09-27 07:34:59 发布

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

我有一个函数,它接受两个输入并返回一个浮点值,例如my_func('A', 'B') = 0.5。在

我有一个可能的输入列表:x = ['A', 'B', 'C', 'D', 'E', 'F']。在

我想要生成一个正方形矩阵(在本例中是6×6),其中每个单元格的值是函数的结果,相应的行和列值作为输入。注my_func('A', 'A') = 1和{}

我试过pandas.crosstab(x, x, aggfunc = my_func),但这不起作用。在


Tags: 函数pandas列表my矩阵浮点func正方形
2条回答

选项1
蛮力

xt = pd.DataFrame(index=x, columns=x)

for i in x:
    for j in x:
        xt.set_value(i, j, my_func(i, j))

演示

^{pr2}$

选项2

idx = pd.MultiIndex.from_product([x, x])
pd.Series(idx.map(lambda x: my_func(*x)), idx).unstack()

      A     B     C     D     E     F
A  4225  4290  4355  4420  4485  4550
B  4290  4356  4422  4488  4554  4620
C  4355  4422  4489  4556  4623  4690
D  4420  4488  4556  4624  4692  4760
E  4485  4554  4623  4692  4761  4830
F  4550  4620  4690  4760  4830  4900

考虑到暴力方法,建议使用.loc方法,即

for i in x:
    for j in x:
        xt.loc[i,j] = my_func(i,j)

而不是:

^{pr2}$

因为set_value is deprecated and will be removed in a future release.也可以使用.at[]或{}赋值函数。在

相关问题 更多 >

    热门问题