如何使用元组填充缺失值

piR*_*red 5 python numpy pandas

考虑 df

np.random.seed([3,1415])
df = pd.DataFrame(np.random.choice([(1, 2), (3, 4), np.nan], (10, 10)))
df
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我该如何填补这些NaN用(0, 0)?


我把这个黑客放在一起,但我假设有一个更直接的方式.这不适用于pd.Series

df.stack().unstack(fill_value=(0, 0))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Abd*_*dou 5

你可以这样做.applymap:

import numpy as np
import pandas as pd


np.random.seed([3,1415])
df = pd.DataFrame(np.random.choice([(1, 2), (3, 4), np.nan], (10, 10)))

df.applymap(lambda x: (0,0) if x is np.nan else x)
Run Code Online (Sandbox Code Playgroud)

pd.Series如果您使用,这将适用于apply:

df[0].apply(lambda x: (0, 0) if x is np.nan else x)
Run Code Online (Sandbox Code Playgroud)

  • 这看起来很不错。您可以将其简化为:`df.applymap(lambda x: (0,0) if x is np.nan else x)` (3认同)
  • 不要使用“x is np.nan”,而是使用“np.isnan(x)”。`is` 表示“是同一个对象”,并且您可能将 `x is np.nan` 设置为 false,而将 `np.isnan(x)` 设置为 true。 (2认同)