在Dataframe和Drop / Create列中计算

问题描述 投票:1回答:2

给出这个样本数据帧

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

python python-3.x pandas
2个回答
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

0
投票

试试这个 :

df['CAL'] = (df['B1']- df['B2']) * 1000
© www.soinside.com 2019 - 2024. All rights reserved.