2017-05-10 9 views
5

के एक साधारण समारोह है कि एक str लेता है और एक dataframe रिटर्न लेते हैं:पायदान के साथ पाइथोनिक प्रकार संकेत?

import pandas as pd 
def csv_to_df(path): 
    return pd.read_csv(path, skiprows=1, sep='\t', comment='#') 

क्या यह कार्य करने के लिए प्रकार संकेत जोड़ने की सिफारिश की pythonic तरीका है?

यदि मैं डेटाफ्रेम के प्रकार के लिए पाइथन पूछता हूं तो यह pandas.core.frame.DataFrame देता है। हालांकि निम्नलिखित काम नहीं करेंगे, क्योंकि यह मुझे बताएगा कि पांडा परिभाषित नहीं हैं।

def csv_to_df(path: str) -> pandas.core.frame.DataFrame: 
    return pd.read_csv(path, skiprows=1, sep='\t', comment='#') 
+0

लेकिन आप 'pd' उपनाम का उपयोग कर रहे हैं, और आप शायद कस्टम प्रकार को परिभाषित कर सकते हैं। –

+0

@MosesKoledoye अगर मैं pd.core.frame.DataFrame को आज़माता हूं तो मुझे 'NameError' के बजाय' विशेषता 'त्रुटि मिल जाएगी। – dangom

+0

मैं "पायथनिसिटी" पर एक अधिकार नहीं हूं लेकिन मैं डॉक्टर-स्ट्रिंग्स की सिफारिश करता हूं ('' 'का उपयोग करके यह फ़ंक्शन एक इनपुट टाइप लेता है और आउटपुट टाइप करता है' '' '') यह भी दिखाया जाएगा कि अगर कोई व्यक्ति मदद करेगा (आपका फ़ंक्शन) 'आपके फ़ंक्शन पर फ़ंक्शन। – Chris

उत्तर

4

क्यों न केवल pd.DataFrame का उपयोग करें?

def csv_to_df(path: str) -> pd.DataFrame: 
    return pd.read_csv(path, skiprows=1, sep='\t', comment='#') 

परिणाम एक ही है:

> help(csv_to_df) 
Help on function csv_to_df in module __main__: 
csv_to_df(path:str) -> pandas.core.frame.DataFrame 
4

मैं वर्तमान में कर रहा हूँ निम्नलिखित:

from typing import TypeVar 
PandasDataFrame = TypeVar('pandas.core.frame.DataFrame') 
def csv_to_df(path: str) -> PandasDataFrame: 
    return pd.read_csv(path, skiprows=1, sep='\t', comment='#') 

कौन देता है:

> help(csv_to_df) 
Help on function csv_to_df in module __main__: 

csv_to_df(path:str) -> ~pandas.core.frame.DataFrame 

है कि कैसे pythonic पता नहीं है, लेकिन यह एक प्रकार संकेत के रूप में पर्याप्त समझा जा सकता है, मुझे लगता है।

+0

यह बिल्कुल पाइथोनिक नहीं है –

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