2012-12-31 3 views
11

मैं एक पांडा/पायथन डेटाफ्रेम का उपयोग कर रहा हूं। मैं एक अंतराल घटाने की कोशिश कर रहा हूँ।पांडा कॉलम अतिरिक्त/घटाव

मैं वर्तमान में उपयोग कर रहा हूँ:

newCol = df.col - df.col.shift() 

यह पहली जगह में एक NaN की ओर जाता है:

NaN 
45 
63 
23 
... 

पहला सवाल: यह इस तरह एक घटाव करने का सबसे अच्छा तरीका है?

दूसरा: यदि मैं इस नए कॉलम में एक कॉलम (पंक्तियों की एक ही संख्या) जोड़ना चाहता हूं। क्या कोई तरीका है कि मैं गणना के लिए सभी नाएन के 0 बना सकता हूं?

पूर्व:

col_1 = 
Nan 
45 
63 
23 

col_2 = 
10 
10 
10 
10 

new_col = 
10 
55 
73 
33 

और नहीं

NaN 
55 
73 
33 

धन्यवाद।

उत्तर

16

मुझे लगता है कि के कंप्यूटिंग lags के तरीके ठीक है:

import pandas as pd 
df = pd.DataFrame(range(4), columns = ['col']) 

print(df['col'] - df['col'].shift()) 
# 0 NaN 
# 1  1 
# 2  1 
# 3  1 
# Name: col 

print(df['col'] + df['col'].shift()) 
# 0 NaN 
# 1  1 
# 2  3 
# 3  5 
# Name: col 

आप NaN से अधिक (या शून्य) एक नंबर चाहते हैं तो संख्या (नहीं NaN), का उपयोग होने की add (या sub) fill_value = 0 के साथ विधि:

print(df['col'].sub(df['col'].shift(), fill_value = 0)) 
# 0 0 
# 1 1 
# 2 1 
# 3 1 
# Name: col 

print(df['col'].add(df['col'].shift(), fill_value = 0)) 
# 0 0 
# 1 1 
# 2 3 
# 3 5 
# Name: col