Pandas。申请()从两列之间的差返回NaN

2024-05-02 12:33:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用下面的代码计算两个pandas列I和{}的绝对差异

    def diff(row):
        """ calculate absolute difference of this row """
        return np.abs(row['I'] - row['Imean'])

    spectrum['diff'] = spectrum.apply(diff, axis=1)

每当spectrum['I']都是零,spectrum['diff']包含所有nan。我错过了什么? (如果我检查spectrum['I']的全零大小写,然后再检查spectrum['diff'] = spectrum['Imean'],我可以避免这个错误。但还是…)

添加的信息:

好吧,我进一步调查了一下,找到了我的问题。我用曲线下的面积来规范化我的数据,并尽量避免被零除,因为我知道可能存在所有的零数据。在

^{pr2}$

我的脚本没有收到运行时警告,但是如果我在Ipython控制台中运行代码,我得到RuntimeWarning: invalid value encountered in true_divide,而{}将被NaN替换。如果我使用ZeroDivisionError,也是一样。 那么在这里如何避免被零除呢?在


Tags: of数据代码pandasreturndefdiff差异
1条回答
网友
1楼 · 发布于 2024-05-02 12:33:02

如果我理解正确,你可以这样做:

In [6]: df = pd.DataFrame(np.random.randint(0, 20, (10,2)), columns=['I', 'Imean'])

In [7]: df['diff'] = (df['I'] - df['Imean']).abs()

In [8]: df
Out[8]:
    I  Imean  diff
0   2      9     7
1   9      1     8
2  18     11     7
3   6     19    13
4   5     12     7
5   4      8     4
6  13      3    10
7   1     19    18
8   6      5     1
9   7      0     7

全零:

^{pr2}$

PS as @piRSquared已经提到,在向熊猫提问时,请始终提供可重复的样本和所需的数据集

相关问题 更多 >