2017-01-06 5 views
5

पर पांडा डेटाफ्रेम में एकाधिक कॉलम बदलें मेरे पास 13 कॉलम और 55,000 पंक्तियों का डेटाफ्रेम है, मैं उन पंक्तियों में से 5 पंक्तियों को डेटाटाइम में बदलने की कोशिश कर रहा हूं, अभी वे 'ऑब्जेक्ट' प्रकार वापस कर रहे हैं और मुझे इस डेटा को बदलने की आवश्यकता है मशीन के लिए मैं सीखने पता है कि अगर मैंडेटाटाइम

data['birth_date'] = pd.to_datetime(data[birth_date], errors ='coerce') 

कर यह एक datetime स्तंभ वापस आ जाएगी, लेकिन मैं 4 अन्य स्तंभों के रूप में अच्छी तरह से करने के लिए करना चाहते हैं, वहाँ एक पंक्ति है कि मैं उन सभी को कॉल करने के लिए लिख सकते हैं? मुझे नहीं लगता कि मैं

data[:,7:12] 

धन्यवाद जैसे इंडेक्स कर सकता हूं!

+0

मुझे यकीन नहीं है कि एक ही समय में एकाधिक कॉलम कन्वर्ट करने के लिए कोई फ़ंक्शन है लेकिन मुझे पता है कि 'read_csv' में' parse_dates' तर्क है जो पहले उन कॉलमों की एक सूची ले सकता है जिन्हें आप पहले कनवर्ट करना चाहते हैं अपना डेटा आयात करना –

उत्तर

13

आप pd.to_datetime

data.iloc[:, 7:12] = data.iloc[:, 7:12].apply(pd.to_datetime, errors='coerce') 
+0

त्वरित प्रश्न, इस मामले में मानचित्र() विधि का उपयोग करना बेहतर नहीं होगा? – David

+0

'मानचित्र' और 'लागू' दोनों कार्य स्वीकार कर सकते हैं, यही कारण है कि यह आपके जैसे उपयोगकर्ताओं को भ्रमित करता है। मैं केवल एक शब्द/श्रृंखला के साथ 'शाब्दिक मानचित्रण' करने के लिए 'मानचित्र' का उपयोग करता हूं। मैं केवल कार्यों के लिए 'आवेदन' का उपयोग करता हूं। 'लागू करें' में कुछ अतिरिक्त कार्यक्षमता भी है। –

7

का उपयोग कर प्रत्येक स्तंभ के माध्यम से पुनरावृति करने के लिए apply उपयोग कर सकते हैं प्रदर्शन चिंता का विषय मैं निम्नलिखित समारोह का उपयोग करने के DATE_TIME को उन स्तंभों कन्वर्ट करने के लिए सलाह देगी:

def lookup(s): 
    """ 
    This is an extremely fast approach to datetime parsing. 
    For large data, the same dates are often repeated. Rather than 
    re-parse these, we store all unique dates, parse them, and 
    use a lookup to convert all dates. 
    """ 
    dates = {date:pd.to_datetime(date) for date in s.unique()} 
    return s.apply(lambda v: dates[v]) 

to_datetime: 5799 ms 
dateutil: 5162 ms 
strptime: 1651 ms 
manual:  242 ms 
lookup:  32 ms 

स्रोत : https://github.com/sanand0/benchmarks/tree/master/date-parse

1

सबसे पहले आपको सभी सी निकालने की आवश्यकता है data से आपकी रूचि में रुचि रखते हैं तो आप निकाले गए फ्रेम में प्रत्येक तत्व के लिए to_datetime लागू करने के लिए पांडा applymap का उपयोग कर सकते हैं, मुझे लगता है कि आप उन स्तंभों की अनुक्रमणिका को जानते हैं जिन्हें आप निकालना चाहते हैं, नीचे दिए गए कोड में तीसरे से सोलहवीं स्तंभों के कॉलम नाम निकाले गए हैं आप वैकल्पिक रूप से एक सूची परिभाषित कर सकते हैं और यह करने के लिए कॉलम के नाम जोड़ने के लिए और का उपयोग उस जगह में, आप भी दिनांक समय प्रविष्टियों

import pandas as pd 

cols_2_extract = data.columns[2:15] 

data[cols_2_extract] = data[cols_2_extract].applymap(lambda x : pd.to_datetime(x, format = '%d %M %Y')) 
0
my_df[['column1','column2']] =  
my_df[['column1','column2']].apply(pd.to_datetime, format='%Y-%m-%d %H:%M:%S.%f') 

नोट की तारीख/समय प्रारूप पारित करने के लिए आवश्यकता हो सकती है: की पाठ्यक्रम आवश्यकतानुसार प्रारूप बदला जा सकता है।

संबंधित मुद्दे