我有一个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
有人可以帮忙吗?
答案 0 :(得分:0)
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