我有这样的数据:
A B
25 50
25 25
50 25
75 100
80 100
100 80
我想计算百分比,B 列比 A 高多少%。 所以,% = (B-A)*100,
但是,当 B 小于 A 时,我想显示负号(即 -50%)。因为我只想要 B how many % > A 。
如果 B 小于 A,则它将显示 0 或 - 负号百分比数字。
例如:A=50,B=25,则 (B/A)*100 = -50% 或 0%
最佳答案
您可以使用 Series.mask
或 numpy.where
:
df['C'] = (df['B'] / df['A']) * 100
df['D'] = df['C'].mask((df['B'] < df['A']), df['C'] * -1)
print (df)
A B C D
0 25 50 200.000000 200.000000
1 25 25 100.000000 100.000000
2 50 25 50.000000 -50.000000
3 75 100 133.333333 133.333333
4 80 100 125.000000 125.000000
5 100 80 80.000000 -80.000000
df['C'] = df['B'].div(df['A']).mul(100)
df['D'] = df['C'].mask((df['B'] < df['A']), df['C'].mul(-1))
print (df)
A B C D
0 25 50 200.000000 200.000000
1 25 25 100.000000 100.000000
2 50 25 50.000000 -50.000000
3 75 100 133.333333 133.333333
4 80 100 125.000000 125.000000
5 100 80 80.000000 -80.000000
df['D'] = np.where((df['B'] < df['A']), df['C'] * -1, df['C'])
print (df)
A B C D
0 25 50 200.000000 200.000000
1 25 25 100.000000 100.000000
2 50 25 50.000000 -50.000000
3 75 100 133.333333 133.333333
4 80 100 125.000000 125.000000
5 100 80 80.000000 -80.000000
关于python - 使用 numpy 和 pandas 如何计算百分比并使用标准并给它负号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44560716/