在Python Dataframe中汇总行
问题内容:
我刚刚开始学习Python,因此如果这个问题在其他地方已经得到解答,请原谅我。我想创建一个名为“ Sum”的新列,该列将简单地添加到前面的列中。
Risk_Parity.tail()
VCIT VCLT PCY RWR IJR XLU EWL
Date
2017-01-31 21.704155 11.733716 9.588649 8.278629 5.061788 7.010918 7.951747
2017-02-28 19.839319 10.748690 9.582891 7.548530 5.066478 7.453951 7.950232
2017-03-31 19.986782 10.754507 9.593623 7.370828 5.024079 7.402774 7.654366
2017-04-30 18.897307 11.102380 10.021139 9.666693 5.901137 7.398604 11.284331
2017-05-31 63.962659 23.670240 46.018698 9.917160 15.234977 12.344524 20.405587
表格中的列有些偏离,但是我所需要的只是(21.70 + 11.73 … + 7.95)我只能创建该列Risk_Parity['sum'] =
,但是我迷路了。
我宁愿不必做 Risk_Parity['sum] = Risk_Parity['VCIT'] + Risk_Parity['VCLT']...
创建sum列后,我想将每一列除以sum列,然后将其放入一个新的数据框,该数据框将不包括sum列。
如果有人可以提供帮助,我将不胜感激。请尽量使您的答案变笨。
谢谢!
汤姆
问题答案:
sum
与参数axis=1
一起使用以指定行总和
Risk_Parity['Sum'] = Risk_Parity.sum(1)
创建的新副本而Risk_Parity
无需在原始文档上写新列
Risk_Parity.assign(Sum= Risk_Parity.sum(1))
还要注意,我命名列Sum
而不是sum
。我这样做是为了避免与sum
创建列所使用的相同方法冲突。
只包含数字列…但是,无论如何,我们都sum
知道跳过非数字列。
RiskParity.assign(Sum=RiskParity.select_dtypes(['number']).sum(1))
# same as
# RiskParity.assign(Sum=RiskParity.sum(1))
VCIT VCLT PCY RWR IJR XLU EWL Sum
Date
2017-01-31 21.70 11.73 9.59 8.28 5.06 7.01 7.95 71.33
2017-02-28 19.84 10.75 9.58 7.55 5.07 7.45 7.95 68.19
2017-03-31 19.99 10.75 9.59 7.37 5.02 7.40 7.65 67.79
2017-04-30 18.90 11.10 10.02 9.67 5.90 7.40 11.28 74.27
2017-05-31 63.96 23.67 46.02 9.92 15.23 12.34 20.41 191.55