如何使用元组填充缺失值

时间:2016-12-15 00:06:10

标签: python pandas numpy

考虑df

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

enter image description here

如何使用NaN填充(0, 0)

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

df.stack().unstack(fill_value=(0, 0))

enter image description here

2 个答案:

答案 0 :(得分:4)

您可以使用var mj = function(x, y, z) { var xName = x && x.name; var yName = y && y.name; var zName = z && z.name; } mj({ name: "mo" })

.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)

,这适用于pd.Series
apply

答案 1 :(得分:1)

我比你更喜欢你的解决方法,但它应该完成工作。

import pandas as pd
import numpy as np

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

idx_arrays = np.where(df.isnull())
idx_tups = zip(idx_arrays[0], idx_arrays[1])

for tup in idx_tups:
     df.loc[tup] = (0, 0)