给出此示例数据框
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函数?非常感谢。
答案 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