在熊猫数据框中显示总计百分比

时间:2019-07-15 13:33:13

标签: python pandas

我想创建一个数据框,将上一个数据库中的数字显示为每行总数的百分比:

date      a       b
06-13   249.0   298.0
06-14   238.0   277.0
06-15   4.0 8.0
06-18   302.0   384.0
06-19   270.0   318.0

以上述示例为例,我希望06-13行包含249,占249 + 298等的百分比

我尝试使用.apply(lambda x: 100*x/x.sum()),但这会显示数字占总数的百分比(包括给定数字上下的其他行)

这是我想要的输出:

date      a       b
06-13   0.455   0.535
06-14   0.46    0.56
...

2 个答案:

答案 0 :(得分:2)

这就是你想要的吗?

alert(sText);

更新:

In [21]: df.eval("pct = 100 * a / (a+b)")
Out[21]:
    date      a      b        pct
0  06-13  249.0  298.0  45.521024
1  06-14  238.0  277.0  46.213592
2  06-15    4.0    8.0  33.333333
3  06-18  302.0  384.0  44.023324
4  06-19  270.0  318.0  45.918367

答案 1 :(得分:0)

另一种方法-

import pandas as pd
d = {'date' : ['06-13','06-14','06-15','06-18','06-19'],
      'a' : [249,238,4.0,302,270],
      'b' : [298.0,277.0,8.0,384.0,318.0]}

# creates Dataframe.
df = pd.DataFrame(d)

# print the data.
print(df)

df1 = df[['a','b']]
row_sum=df1.sum(axis=1)
df['a']=df['a']/row_sum
df['b']=df['b']/row_sum
print(df)

输出-

    date      a      b
0  06-13  249.0  298.0
1  06-14  238.0  277.0
2  06-15    4.0    8.0
3  06-18  302.0  384.0
4  06-19  270.0  318.0
    date         a         b
0  06-13  0.455210  0.544790
1  06-14  0.462136  0.537864
2  06-15  0.333333  0.666667
3  06-18  0.440233  0.559767
4  06-19  0.459184  0.540816