मेरे पास एक डेटाफ्रेम है जिसमें तीन कॉलम होते हैं: आईडी, दिनांक (हमेशा महीने का अंत) और किसी दिए गए दिनांक पर दिए गए आईडी के लिए एक मान। मान समय के साथ बदलते हैं और आईडी के लिए अद्वितीय होते हैं। मैं किसी दिए गए आईडी के लिए एक महीने से अगले महीने (प्रतिशत और पूर्ण मूल्य दोनों के रूप में) के मूल्य में परिवर्तन की गणना कैसे कर सकता हूं?

यहाँ नमूना डेटा है। मैं एक नया कॉलम चाहता हूं जो दिखाएगा कि आईडी 1850 के लिए 2007-12-01 से 2008-01-01 में परिवर्तन .0004 है और इसी तरह प्रत्येक महीने के लिए प्रत्येक आईडी के लिए महीने में परिवर्तन होता है। ~ १००k कुल पंक्तियाँ और ~ १००० विभिन्न आईडी हैं

Date                ID       value_
2007-12-01 00:00:00 1850    -0.0496133979294919
2008-01-01 00:00:00 1850    -0.0500387131996307
2008-02-01 00:00:00 1850    -0.0492422215808407
2007-02-01 00:00:00 4022    -0.0195919625346613
2007-03-01 00:00:00 4022    -0.0194071594854936
2007-04-01 00:00:00 4022    -0.00949770507514844
2007-05-01 00:00:00 4022    -0.00611289851053481
2007-06-01 00:00:00 4022    -0.00966828278354329
2007-07-01 00:00:00 4022    -0.010420327834716
2007-08-01 00:00:00 4022    -0.00374361336176163
2007-09-01 00:00:00 4022    -0.0217189168574824
2007-10-01 00:00:00 4022    -0.0210927493134818
2007-11-01 00:00:00 4022    -0.0208540558170204
2007-12-01 00:00:00 4022    -0.0281891859572789
2008-01-01 00:00:00 4022    -0.0342401666700859
2008-02-01 00:00:00 4022    -0.0345209140419046
2007-12-01 00:00:00 51667   -0.00457253924855003
2008-01-01 00:00:00 51667   -0.00613436134423086
2008-02-01 00:00:00 51667   -0.011212483689408
```)
0
afrey0302 23 जिंदा 2020, 05:51

1 उत्तर

सबसे बढ़िया उत्तर

सुनिश्चित करें कि डेटाफ़्रेम आईडी और दिनांक के अनुसार क्रमबद्ध है।

आईडी के आधार पर समूह मूल्य कॉलम पर अंतर () का उपयोग करता है:

df['Date']= pd.to_datetime(df['Date'])
df = df.sort_values(['ID','Date'])
df['diff'] = df.groupby('ID')['value_'].diff().fillna(0)
0
Sushan 23 जिंदा 2020, 04:03