2015-03-17 15 views
7

के साथ नाम दिन का दिन दिन यदि मैं इस मज़ेदार pd.DatetimeIndex(dfTrain['datetime']).weekday का उपयोग करता हूं तो मुझे दिन की संख्या मिलती है, लेकिन मुझे कोई ऐसा फ़ंक्शन नहीं मिलता जो दिन का नाम देता है ... तो मुझे 0 से सोमवार को कनवर्ट करने की आवश्यकता है, 1 अगस्त को और इतने पर।पांडस

यहाँ मेरी dataframe का एक उदाहरण है:

  datetime season holiday workingday weather temp atemp humidity windspeed count 
    0 2011-01-01 00:00:00 1 0 0 1 9.84 14.395 81 0.0000 16 
    1 2011-01-01 01:00:00 1 0 0 1 9.02 13.635 80 0.0000 40 
    2 2011-01-01 02:00:00 1 0 0 1 9.02 13.635 80 0.0000 32 
    3 2011-01-01 03:00:00 1 0 0 1 9.84 14.395 75 0.0000 13 
    4 2011-01-01 04:00:00 1 0 0 1 9.84 14.395 75 0.0000 1 
    5 2011-01-01 05:00:00 1 0 0 2 9.84 12.880 75 6.0032 1 
    6 2011-01-01 06:00:00 1 0 0 1 9.02 13.635 80 0.0000 2 
    7 2011-01-01 07:00:00 1 0 0 1 8.20 12.880 86 0.0000 3 
    8 2011-01-01 08:00:00 1 0 0 1 9.84 14.395 75 0.0000 8 
    9 2011-01-01 09:00:00 1 0 0 1 13.12 17.425 76 0.0000 14 

एक और सवाल अधिक है, जो pandas.DatetimeIndex.dayofweek और pandas.DatetimeIndex.weekday के बीच का अंतर है?

+1

तो क्यों दिन के नाम के साथ एक 7 टपल का उपयोग नहीं? – Skaperen

+1

आप [calendar.day_name] से स्थानीयकृत दिन के नामों की एक सरणी प्राप्त कर सकते हैं (https://docs.python.org/3/library/calendar.html#calendar.day_name) –

उत्तर

7

एक विधि है, जब तक datetime है के रूप में पहले से ही एक datetime स्तंभ datetime.strftime लागू करने के लिए काम करने के दिन के लिए स्ट्रिंग प्राप्त करने के लिए है:

In [105]: 

df['weekday'] = df[['datetime']].apply(lambda x: dt.datetime.strftime(x['datetime'], '%A'), axis=1) 
df 
Out[105]: 
      datetime season holiday workingday weather temp atemp \ 
0 2011-01-01 00:00:00  1  0   0  1 9.84 14.395 
1 2011-01-01 01:00:00  1  0   0  1 9.02 13.635 
2 2011-01-01 02:00:00  1  0   0  1 9.02 13.635 
3 2011-01-01 03:00:00  1  0   0  1 9.84 14.395 
4 2011-01-01 04:00:00  1  0   0  1 9.84 14.395 
5 2011-01-01 05:00:00  1  0   0  2 9.84 12.880 
6 2011-01-01 06:00:00  1  0   0  1 9.02 13.635 
7 2011-01-01 07:00:00  1  0   0  1 8.20 12.880 
8 2011-01-01 08:00:00  1  0   0  1 9.84 14.395 
9 2011-01-01 09:00:00  1  0   0  1 13.12 17.425 

    humidity windspeed count weekday 
0  81  0.0000  16 Saturday 
1  80  0.0000  40 Saturday 
2  80  0.0000  32 Saturday 
3  75  0.0000  13 Saturday 
4  75  0.0000  1 Saturday 
5  75  6.0032  1 Saturday 
6  80  0.0000  2 Saturday 
7  86  0.0000  3 Saturday 
8  75  0.0000  8 Saturday 
9  76  0.0000  14 Saturday 

अपने अन्य प्रश्न के रूप में, वहाँ dayofweek और weekday बीच कोई अंतर नहीं है।

यह स्ट्रिंग बराबर करने के लिए काम करने के दिन का एक नक्शा को परिभाषित करने और काम करने के दिन नक्शे पर कॉल करने के लिए जल्दी हो जाएगा:

dayOfWeek={0:'Monday', 1:'Tuesday', 2:'Wednesday', 3:'Thursday', 4:'Friday', 5:'Saturday', 6:'Sunday'} 
df['weekday'] = df['datetime'].dt.dayofweek.map(dayOfWeek) 

संस्करण के लिए 0.15.0 करने से पहले निम्न काम करना चाहिए:

import datetime as dt 
df['weekday'] = df['datetime'].apply(lambda x: dt.datetime.strftime(x, '%A')) 

संस्करण 0.18.1 और नए

अब एक नई सुविधा विधि dt.weekday_name है ऐसा करने के लिए ऊपर

+0

'dt' क्या है? मुझे यह त्रुटि मिलती है = 'विशेषता त्रुटि:' श्रृंखला 'ऑब्जेक्ट में कोई विशेषता नहीं है' dt'' – Yari

+0

आप पांडा का किस संस्करण का उपयोग कर रहे हैं? 'dt' एक डेटाटाइम विशेषता एक्सेसर है जो' 0.15.0' में जोड़ा गया था, आपकी श्रृंखला को डेटाटाइम डाइटपे होना चाहिए, यदि आवश्यक हो तो आप परिवर्तित कर सकते हैं: 'df [' datetime '] = pd.to_datetime (df [' डेटाटाइम ']) ' – EdChum

+0

' 0.14.1' एनाकोंडा में शामिल है। वैसे भी 'डीएफ [' डेटाटाइम ']' प्रारूप 'डेटाटाइम 64 [एनएस] ' – Yari

7

संस्करण 0.18.1 में आप नई विधि dt.weekday_name उपयोग कर सकते हैं:

df['weekday'] = df['datetime'].dt.weekday_name 
print df 
      datetime season holiday workingday weather temp atemp \ 
0 2011-01-01 00:00:00  1  0   0  1 9.84 14.395 
1 2011-01-01 01:00:00  1  0   0  1 9.02 13.635 
2 2011-01-01 02:00:00  1  0   0  1 9.02 13.635 
3 2011-01-01 03:00:00  1  0   0  1 9.84 14.395 
4 2011-01-01 04:00:00  1  0   0  1 9.84 14.395 
5 2011-01-01 05:00:00  1  0   0  2 9.84 12.880 
6 2011-01-01 06:00:00  1  0   0  1 9.02 13.635 
7 2011-01-01 07:00:00  1  0   0  1 8.20 12.880 
8 2011-01-01 08:00:00  1  0   0  1 9.84 14.395 
9 2011-01-01 09:00:00  1  0   0  1 13.12 17.425 

    humidity windspeed count weekday 
0  81  0.0000  16 Saturday 
1  80  0.0000  40 Saturday 
2  80  0.0000  32 Saturday 
3  75  0.0000  13 Saturday 
4  75  0.0000  1 Saturday 
5  75  6.0032  1 Saturday 
6  80  0.0000  2 Saturday 
7  86  0.0000  3 Saturday 
8  75  0.0000  8 Saturday 
9  76  0.0000  14 Saturday