替换pandas系列中的numpy数组



我有一个pandas DataFrame,它包含numpy.ndarray和分类变量。

import pandas as pd
import numpy as np
df = pd.DataFrame({
'i': [0, 1, 2],
'a': [np.array([]), np.array([]), 'A']
})
df['a'][0]
array([], dtype=float64)

我想把arrays换成np.nan

我试过了:df['a'].replace(np.array([]), np.nan),但没用。

如果要用nan替换空数组,可以将列a转换为布尔掩码:

df['a'] = df['a'].where(df['a'].astype(bool), np.nan)
print(df)
# Output
i    a
0  0  NaN
1  1  NaN
2  2    A

一种方法可以是使用isinstance:进行检查

# on one column
df['a'] = df['a'].apply(lambda x: np.nan if isinstance(x, np.ndarray) else x)
#whole df
df = df.applymap(lambda x: np.nan if isinstance(x, np.ndarray) else x)

最新更新