选择和/或替换pandas数据框架内的特定数组



下面是我可复制的例子:

import pandas as pd
import numpy as np
df = pd.DataFrame({'x' : [np.zeros(2), np.array([1,2])], 'y' : [np.array([3,2]),0], 'z' : [np.array([4,5]),np.zeros(2)], 't' : [np.array([3,4]),np.array([4,5])]})

我的目标是将np.zeros(2)更改为np.Nan,以便能够计算除0以外的每一行的平均二维数组。

I have try:

df.replace(np.zeros(2),np.NaN)

df[df.eq(np.zeros(2)).any(axis=1)]

df.where(df == [np.zeros(2)])

df[df == np.zeros(2)]

如果我正在查找的项目不是数组,则所有这些都有望工作。

显然,作为Python的新手,肯定有一个概念我没有掌握。

不能将对象作为值进行矢量化。

使用applymapnumpy.array_equal:

df[df.applymap(lambda x: np.array_equal(x, np.zeros(2)))] = np.nan

Updateddf:

x       y       z       t
0     NaN  [3, 2]  [4, 5]  [3, 4]
1  [1, 2]       0     NaN  [4, 5]

allclose:

df[df.applymap(lambda x: np.allclose(x, 0))] = np.nan

输出:

x       y       z       t
0     NaN  [3, 2]  [4, 5]  [3, 4]
1  [1, 2]     NaN     NaN  [4, 5]

最新更新