数据框和删除/创建列中的计算

时间:2019-02-28 15:15:20

标签: python python-3.x pandas

给出此示例数据框

           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函数?非常感谢。

2 个答案:

答案 0 :(得分:1)

使用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

答案 1 :(得分:0)

尝试一下:

df['CAL'] = (df['B1']- df['B2']) * 1000