2015-10-14 84 views
2

我正在使用熊貓在從csv創建的數據框中創建一個新列。熊貓Lambda功能:屬性錯誤'發生在索引0'

[in] DfT_raw = pd.read_csv('./file.csv', index_col = False) 
[in] print(DfT_raw) 

[out]   Region Name dCount ONS CP S Ref E S Ref N Road \ 
0  East Midlands E06000015  14/04/00 00:00 37288 434400 336000 A516 
1  East Midlands E06000015  14/04/00 00:00 37288 434400 336000 A516 
2  East Midlands E06000015  14/04/00 00:00 37288 434400 336000 A516 
3  East Midlands E06000015  14/04/00 00:00 37288 434400 336000 A516 

我定義一個函數從日期時間字段N(DCOUNT)剝離的時間,然後創建一個新的列「日期」

[in] def date_convert(dCount): 
     return dCount.date() 

    DfT_raw['date'] = DfT_raw.apply(lambda row: date_convert(row['dCount']), axis=1) 

[out] AttributeError: ("'str' object has no attribute 'date'", u'occurred at index 0') 

有一些問題與index_col。我以前使用index_col = 1但得到了相同的錯誤。

當我打印 'DCOUNT' 我得到

0   14/04/00 00:00 
1   14/04/00 00:00 
2   14/04/00 00:00 
3   14/04/00 00:00 
4   14/04/00 00:00 

索引列導致錯誤。我如何確保這不是功能?

+1

這不是日期時間對象ct,你需要首先轉換'df ['dCount'] = pd.to_datetime(df ['dCount'])',然後得到日期'df ['dCount']。dt.date',你可以閱讀那些datetime字符串作爲日期時間通過傳遞'parse_dates = ['dCount']'到'read_csv' – EdChum

+0

DfT_raw = pd.read_csv('./ file.csv',parse_dates = ['dCount'],index_col = False)非常感謝!如果您願意,歡迎隨時發表回覆 – LearningSlowly

回答

3

這裏你的錯誤是,你的日期strdatetime,或者使用to_datetime轉換:

df['dCount'] = pd.to_datetime(df['dCount']) 

或更好的只是告訴read_csv解析該列日期時間:

DfT_raw = pd.read_csv('./file.csv', parse_dates=['dCount'],index_col = False) 

之後,您可以然後通過調用dt.date訪問器來獲取日期