我想创建一个数据框,将上一个数据库中的数字显示为每行总数的百分比:
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
...
答案 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