面板数据中的权重 - 熊猫

时间:2016-03-22 11:24:06

标签: pandas dataframe weighted-average

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

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

我的数据如下:

                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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以div使用sum

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