2016-12-14 10 views
6

मैं निम्न डेटाभरें na मूल्यों पिछली पंक्ति पांडा

SAM 
3 
5 
9 
Nan 
Nan 
24 
40 
Nan 
57 

अब मैं सम्मिलित करना चाहते हैं के साथ सैम नामक एक स्तंभ के साथ एक डेटा फ्रेम के लिए एक्स जोड़कर 12, 15 और Nan मूल्यों में क्रमशः 43 (क्योंकि 9+3=12, 12+3=15, और 40+3=43)। दूसरे शब्दों में, पिछली पंक्ति में जोड़कर Nan पंक्ति भरें (जो Nan भी हो सकती है)।

मुझे पता है कि यह लूप के माध्यम से पुनरावृत्ति द्वारा किया जा सकता है। लेकिन क्या हम इसे सदिश तरीके से कर सकते हैं? pandas.fillna() में ffill के कुछ संशोधित संस्करण की तरह (जो यहां इस्तेमाल किया जा सकता था अगर हमारे पास लगातार NaNs नहीं था)।

+1

भविष्य में, का उपयोग नहीं करें ''
अपने प्रश्न फ़ॉर्मेट करने के लिए। – IanS

उत्तर

7

आप इस vectorized दृष्टिकोण कोशिश कर सकते हैं:

nul = df['SAM'].isnull() 
nul.groupby((nul.diff() == 1).cumsum()).cumsum()*3 + df['SAM'].ffill() 

#0  3.0 
#1  5.0 
#2  9.0 
#3 12.0 
#4 15.0 
#5 24.0 
#6 40.0 
#7 43.0 
#8 57.0 
#Name: SAM, dtype: float64 
  1. फूट डालो श्रृंखला में लापता मूल्यों टुकड़ों में और प्रत्येक टुकड़ा की लंबाई के आधार लापता मूल्य पदों के लिए 3,6,9 आदि जोड़ने;
  2. परिणामस्वरूप SAM कॉलम से आगे भरे हुए मान जोड़ें।
संबंधित मुद्दे