如何在Pandas DataFrame中逐行计算百分比,指定行返回结果其余行返回No
解决Pandas DataFrame指定行计算百分比的问题
需求明确:给名为df的DataFrame新增列E,仅对指定行(示例中A列为X的行)计算百分比(公式为该行D列值除以Y行的D列值,结果保留两位小数),其余行填充'No'。
输入示例
| A | B | C | D |
|---|---|---|---|
| X | 500 | 250 | 50.00 |
| Y | 980 | 700 | 71.42 |
输出示例
| A | B | C | D | E |
|---|---|---|---|---|
| X | 500 | 250 | 50.00 | 70.08 |
| Y | 980 | 700 | 71.42 | No |
代码实现
import pandas as pd import numpy as np # 示例DataFrame创建(若已有可跳过) data = {'A': ['X', 'Y'], 'B': [500, 980], 'C': [250, 700], 'D': [50.00, 71.42]} df = pd.DataFrame(data) # 获取Y行的D列数值作为计算除数 y_d_value = df.loc[df['A'] == 'Y', 'D'].iloc[0] # 生成目标列E df['E'] = np.where(df['A'] == 'X', round(df['D'] / y_d_value * 100, 2), 'No') print(df)
代码说明
- 先定位A列为Y的行,提取其D列数值作为百分比计算的除数;
- 用
np.where做条件判断:当A列为X时,执行(D列值/除数)*100的计算并保留两位小数,其余行直接填充'No'; - 直接将计算结果赋值给新列
E,完成需求。
内容的提问来源于stack exchange,提问作者User277883
相关产品推荐
相关产品推荐

