面板数据中的权重-Pandas



我有一个pandas DataFrame,它按每月日期编制索引,包含1和0。

对于每个日期(行),我想对行求和,然后将每个数据点除以该和,以确定一段时间内的权重(如果数据点为零,则应保持为零)。

我的数据如下:

                A       B       C       D      
01-2001         1       1       0       1
02-2001         1       0       0       1
03-2001         1       0       0       1
04-2001         1       1       1       1
05-2001         1       1       1       0

输出应该是这样的:

                A       B       C       D      
01-2001         0.33    0.33    0       0.33
02-2001         0.5     0       0       0.5
03-2001         0.5     0       0       0.5
04-2001         0.25    0.25    0.25    0.25
05-2001         0.33    0.33    0.33    0

有人能帮忙吗?

您可以将divsum:一起使用

print df.div(df.sum(axis=1), axis=0)
                A         B         C         D
01-2001  0.333333  0.333333  0.000000  0.333333
02-2001  0.500000  0.000000  0.000000  0.500000
03-2001  0.500000  0.000000  0.000000  0.500000
04-2001  0.250000  0.250000  0.250000  0.250000
05-2001  0.333333  0.333333  0.333333  0.000000

如果你需要round:

print df.div(df.sum(axis=1), axis=0).round(2)
            A     B     C     D
01-2001  0.33  0.33  0.00  0.33
02-2001  0.50  0.00  0.00  0.50
03-2001  0.50  0.00  0.00  0.50
04-2001  0.25  0.25  0.25  0.25
05-2001  0.33  0.33  0.33  0.00

最新更新