2017-05-23 108 views
0
def write_csv(mydf): 
    nominal = mydf.name 
    csvname = nominal + ".csv" 
    mydf.to_csv(csvname , encoding='utf-8', header='False') 

這並沒有工作,當我被調用的函數:Python函數寫一個CSV

write_csv(ulangp) 
Attribute Error: 'DataFrame' object has no attribute 'name' 

什麼是做到這一點的函數假設我想在一個數據幀傳遞正確的方式?

+1

你是怎麼想到'name'給你? –

+0

我曾經看過一些其他文章,它被假設.name會產生數據框的文字(字符串)名稱,這正是我想要的。 –

+2

數據幀沒有內部名稱。你可以指定一個:'ulangp.name =「foo」'。 –

回答

1

可以傳遞,如果數據幀沒有預設名稱使用[N可選] name參數:

def write_csv(mydf, name="default"): # Use any good default name here 
    try: 
     nominal = mydf.name 
    except AttributeError: 
     nominal = name 
    csvname = nominal + ".csv" 
    mydf.to_csv(csvname , encoding='utf-8', header='False') 
+0

有趣。我期待一些低級技巧能夠將該對象轉換爲函數目的的字符串變量。要求主程序中的用戶在他們調用函數之前分配一個名稱將不起作用。目的是編寫一個具有唯一名稱的csv文件,即數據框變量的字符串表示形式。如果一堆人按照上面的方法調用該函數,它將繼續覆蓋default.csv,因爲沒有人會首先設置.name屬性。 –

+0

如果一個程序保存具有相同名稱的兩個數據幀,將會發生同樣的情況。 (Dataframe名稱不必是唯一的。) – DyZ

+0

情況是有一個主程序,並且在此程序中,通過罐頭邏輯創建了大約10個數據幀,每個數據幀都有自己的名稱。我想要一個實用功能來讓用戶依次傳入並寫出一個CSV文件。我沒有預料到他們必須設置「.name」屬性。我想我可以查詢一些(低級)目錄屬性來獲取它。 –