2016-09-08 5 views
9

का उपयोग कर तिथि से पाइथन पांडस समूह मेरे पास एक कॉलम Date_Time है जो मैं एक नया कॉलम बनाये बिना दिनांक समयबद्ध करना चाहता हूं। क्या यह संभव है कि मेरे पास वर्तमान कोड काम नहीं करता है।डेटटाइम डेटा

df = pd.groupby(df,by=[df['Date_Time'].date()]) 

उत्तर

8

क्रेडिट अपने सेटअप dataframe


के लिए @jezrael को आप सूचकांक 'Date_Time' सेट होने के लिए कर सकते हैं और प्रयोग pd.TimeGrouper

df.set_index('Date_Time').groupby(pd.TimeGrouper('D')).mean().dropna() 

enter image description here

+0

यह बहुत अच्छा है! मैं इसे तारीखों को जोड़ने से कैसे रोकूं जिनके लिए कोई डेटा नहीं है? उदाहरण के लिए यदि मेरे पास दिन 9/1,9/2 के लिए डेटा था, और 9/4 में अभी भी NaN मानों के साथ 9/3 है। –

+0

@GoBlue_MathMan '.dropna()' – piRSquared

10

आप dt.date द्वारा स्तंभ Date_Time की तारीखों से groupby उपयोग कर सकते हैं:

df = df.groupby([df['Date_Time'].dt.date]).mean() 

नमूना:

df = pd.DataFrame({'Date_Time': pd.date_range('10/1/2001 10:00:00', periods=3, freq='10H'), 
        'B':[4,5,6]}) 

print (df) 
    B   Date_Time 
0 4 2001-10-01 10:00:00 
1 5 2001-10-01 20:00:00 
2 6 2001-10-02 06:00:00 

print (df['Date_Time'].dt.date) 
0 2001-10-01 
1 2001-10-01 
2 2001-10-02 
Name: Date_Time, dtype: object 

df = df.groupby([df['Date_Time'].dt.date])['B'].mean() 
print(df) 
Date_Time 
2001-10-01 4.5 
2001-10-02 6.0 
Name: B, dtype: float64 

resample साथ एक अन्य समाधान:

df = df.set_index('Date_Time').resample('D')['B'].mean() 

print(df) 
Date_Time 
2001-10-01 4.5 
2001-10-02 6.0 
Freq: D, Name: B, dtype: float64 
संबंधित मुद्दे