面板数据中的权重 - Pandas
Weights in Panel Data - 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
有人能帮忙吗?
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
我有一个 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
有人能帮忙吗?
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