2016-12-15 7 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) 

अगर आप apply का प्रयोग कर एक pd.Series के लिए काम करेंगे:

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

यह सुंदर अच्छा लग रहा है। आप इसे सरल बना सकते हैं: 'df.applymap (lambda x: (0,0) यदि x np.nan else 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) 
संबंधित मुद्दे