2016-12-15 34 views
5

考慮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

回答

4

你可以用.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

df[0].apply(lambda x: (0, 0) if x is np.nan else x) 
+3

這看起來很不錯。你可以簡化爲:'df.applymap(lambda x:(0,0)如果x是np.nan其他x)' –

+0

@TedPetrou,謝謝你的提示! – Abdou

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)