首页 > 解决方案 > 数据框中的计算和删除/创建列

问题描述

鉴于此示例数据框

           Base         Others     B1        B2      Date
ABC                                                                          
Shop       83.04        82.70     0.000     0.000  01012019
Shop       83.04        82.71     0.000     0.000  01012019
Shop       83.02        82.70     0.000     0.000  02012019
Shop       83.02        82.69     0.167     0.000  02012019
Shop       82.98        82.67     0.227     0.000  03012019
Shop       77.94        77.66     0.640     0.054  03012019
Shop       77.45        77.16     0.354     0.020  04012019
Shop       72.81        72.58     0.125     0.076  04012019
Shop       72.81        72.57     0.012     0.003  05012019
Shop       72.81        72.57     0.000     0.000  05012019

我想做以下计算:

(B1-B2)*1000

并将结果放在一个名为“Cal”的新列中。同时,我想在计算后将 B1 和 B2 从数据框中删除。

计算方面,我尝试了这一行:

cal_df = df.loc[((pd.to_numeric(df['B1']))-(pd.to_numeric(df['B2'])))*1000]

但是收到了一个显示数据帧值的 KeyError(实际上没有出现真正的错误语句)。

有人可以就此提出建议吗?也许我需要使用 numpy 或 groupby 函数?非常感谢。

标签: pythonpython-3.xpandas

解决方案


用于pop提取列 - 从原始 DataFrame 中删除减去后:

df['new'] = (df.pop('B1') - df.pop('B2'))*1000

如果需要转换为数字和可能的一些非数字值:

df['new'] = (pd.to_numeric(df.pop('B1'), errors='coerce') - 
             pd.to_numeric(df.pop('B2'), errors='coerce'))*1000

推荐阅读