Pandas:将两列相减并将结果保存为绝对值

9

我有一个代码,其中使用pandas打开了一个csv文件并创建了一个新的csv文件。我需要创建一行代码“注释掉的最后两行”,该行代码是将两行相减然后取绝对值。我尝试了很多想法,但都出现了错误。

import pandas as pd
import numpy as np

df = pd.read_csv(filename_read)
ids = df['id']

oosDF = pd.DataFrame()
oosDF['id'] = ids
oosDF['pred'] = pred
oosDF['y'] = df['target']
#oosDF['diff'] = oosdF['pred'] - oosDF['y']
#oosDF['diff'] = oosDF.abs()

什么样的错误?也许需要 oosDF['diff'] = (oosdF['pred'] - oosDF['y']).abs() - jezrael
1
我认为你只需要将第二行倒数的oosdF更改为oosDF,它就可以正常工作了。 - Alxander
谢谢,让我来修复它。 - Sam B.
2个回答

12
我认为你需要通过子集(双方括号中的列名)创建新的DataFrame,然后获取列之间差值的绝对值:abs
oosDF = df[['id','pred', 'target']].replace(columns={'target':'y'})
oosDF['diff'] = (oosDF['pred'] - oosDF['y']).abs()

pred is made from an ML prediction so is not previously in df but I might go with adding it to df first. The error i get is NameError: name 'oosdF' is not defined - Sam B.
oosDF['diff'] = (oosdF['pred'] - oosDF['y']).abs()oosDF['diff'] = (oosdF['pred'] - oosDF['y']).abs() - Sam B.
如果将“oosDF”更改为“df1”,它应该可以工作,这真的很奇怪。 - jezrael
1
似乎我打错了一个字,让我先试一下 - Sam B.

1
在你的第一行注释中,你写成了oosdF而不是oosDF
在你的第二行注释中,你将列设置为应用于整个数据帧的abs()。应该是oosDF['diff'].abs() 希望这可以帮到你!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接