Tôi có một DataFrame
với cột có tên date
. Làm cách nào để chúng tôi có thể chuyển đổi/phân tích cú pháp cột 'ngày' thành đối tượng DateTime
?Phân tích cú pháp cột Gấu trúc thành Ngày giờ
Tôi đã tải cột ngày từ cơ sở dữ liệu Postgresql bằng cách sử dụng sql.read_frame()
. Ví dụ về cột date
là 2013-04-04
.
Điều tôi đang cố gắng làm là chọn tất cả các hàng trong một khung dữ liệu có cột ngày của chúng trong một khoảng thời gian nhất định, như sau 2013-04-01
và trước 2013-04-04
.
nỗ lực của tôi dưới đây cung cấp cho các lỗi 'Series' object has no attribute 'read'
Cố gắng
import dateutil
df['date'] = dateutil.parser.parse(df['date'])
Lỗi
AttributeError Traceback (most recent call last)
<ipython-input-636-9b19aa5f989c> in <module>()
15
16 # Parse 'Date' Column to Datetime
---> 17 df['date'] = dateutil.parser.parse(df['date'])
18
19 # SELECT RECENT SALES
C:\Python27\lib\site-packages\dateutil\parser.pyc in parse(timestr, parserinfo, **kwargs)
695 return parser(parserinfo).parse(timestr, **kwargs)
696 else:
--> 697 return DEFAULTPARSER.parse(timestr, **kwargs)
698
699
C:\Python27\lib\site-packages\dateutil\parser.pyc in parse(self, timestr, default, ignoretz, tzinfos, **kwargs)
299 default = datetime.datetime.now().replace(hour=0, minute=0,
300 second=0, microsecond=0)
--> 301 res = self._parse(timestr, **kwargs)
302 if res is None:
303 raise ValueError, "unknown string format"
C:\Python27\lib\site-packages\dateutil\parser.pyc in _parse(self, timestr, dayfirst, yearfirst, fuzzy)
347 yearfirst = info.yearfirst
348 res = self._result()
--> 349 l = _timelex.split(timestr)
350 try:
351
C:\Python27\lib\site-packages\dateutil\parser.pyc in split(cls, s)
141
142 def split(cls, s):
--> 143 return list(cls(s))
144 split = classmethod(split)
145
C:\Python27\lib\site-packages\dateutil\parser.pyc in next(self)
135
136 def next(self):
--> 137 token = self.get_token()
138 if token is None:
139 raise StopIteration
C:\Python27\lib\site-packages\dateutil\parser.pyc in get_token(self)
66 nextchar = self.charstack.pop(0)
67 else:
---> 68 nextchar = self.instream.read(1)
69 while nextchar == '\x00':
70 nextchar = self.instream.read(1)
AttributeError: 'Series' object has no attribute 'read'
df['date'].apply(dateutil.parser.parse)
mang lại cho tôi lỗi AttributeError: 'datetime.date' object has no attribute 'read'
df['date'].truncate(after='2013/04/01')
cung cấp cho các lỗi TypeError: can't compare datetime.datetime to long
df['date'].dtype
lợi nhuận dtype('O')
. Nó đã là một đối tượng datetime
?
Vui lòng đăng ví dụ về nội dung nào đó trong cột 'ngày' của bạn! Bởi vì gấu trúc nên thực sự nhận ra một đối tượng datetime, vì vậy sẽ rất có ích khi xem định dạng thực tế cho cột đó –
@RyanSaxe Tôi đã nạp cột ngày tháng từ cơ sở dữ liệu Postgresql bằng cách sử dụng 'sql.read_frame()'. Ví dụ về cột 'ngày' là' 2013-04-04'. Làm thế nào để bạn kiểm tra dtype của một cột? – Nyxynyx
'df ['date']. Dtype' trả về' dtype ('O') ' – Nyxynyx