पंडों में 30 दिनों का रोल करना
Dec 08 2020
मेरे पास एक डेटासेट है:
import pandas as pd
df = pd.DataFrame({
'ID': ['27459', '27459', '27459', '27459', '27459', '27459', '27459', '48002', '48002', '48002'],
'Invoice_Date': ['2020-06-26', '2020-06-29', '2020-06-30', '2020-07-14', '2020-07-25',
'2020-07-30', '2020-08-02', '2020-05-13', '2020-06-20', '2020-06-28'],
'Difference_Date': [0,3,1,14,11,5,3,0,38,8],
})
df
मुझे एक और कॉलम जोड़ने की आवश्यकता है जो 30 दिनों की अवधि को रोल करने का औसत है। मैंने उपयोग करने की कोशिश की rolling
लेकिन यह मुझे त्रुटि देता है window must be an integer
। चूंकि यह ग्राहक-आधारित डेटा है, इसलिए इसे समूहबद्ध भी ID
किया जाना चाहिए ।
मेरा अपेक्षित आउटपुट है:
ID Invoice_Date Difference_Date Average
0 27459 2020-06-26 0 0.00
1 27459 2020-06-29 3 1.50
2 27459 2020-06-30 1 1.33
3 27459 2020-07-14 14 4.50
4 27459 2020-07-25 11 5.80
5 27459 2020-07-30 5 10.00
6 27459 2020-08-02 3 8.25
7 48002 2020-05-13 0 0.00
8 48002 2020-06-20 38 38.00
9 48002 2020-06-28 8 23.00
30 दिनों के रोलिंग के औसत की गणना के लिए क्या कोई कारगर उपाय है?
जवाब
2 ZLi Dec 08 2020 at 21:32
इसका कारण यह है कि पांडा को एक डेटाइमइंडेक्स की आवश्यकता है df.rolling('30D')
:
import pandas as pd
df = pd.DataFrame({
'ID': ['27459', '27459', '27459', '27459', '27459', '27459', '27459', '48002', '48002', '48002'],
'Invoice_Date': ['2020-06-26', '2020-06-29', '2020-06-30', '2020-07-14', '2020-07-25',
'2020-07-30', '2020-08-02', '2020-05-13', '2020-06-20', '2020-06-28'],
'Difference_Date': [0,3,1,14,11,5,3,0,38,8],
})
df.index = pd.DatetimeIndex(df['Invoice_Date'])
df = df.sort_index()
df.rolling('30D')