-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
Description
Pandas version checks
-
I have checked that this issue has not already been reported.
-
I have confirmed this bug exists on the latest version of pandas.
-
I have confirmed this bug exists on the main branch of pandas.
Reproducible Example
from datetime import datetime
import pandas as pd
df = pd.read_csv(...
df.info()<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 datetime 100 non-null datetime64[ns]
1 consumption 100 non-null float64
.
.
.
df["datetime"] = df.datetime.dt.to_pydatetime()
# or
df["datetime"] = df.datetime.astype(datetime)<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 datetime 100 non-null datetime64[ns]
1 consumption 100 non-null float64
.
.
.
# or
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[75], line 1
----> 1 df = reduce_size(df)
2 df.info()
Cell In[74], line 4, in reduce_size(df)
3 def reduce_size(df):
----> 4 df["datetime"] = df.datetime.astype(datetime)
5 df["total_hours"] = df.total_hours.astype(np.int32)
6 for col in ["peak", "standard", "valley", "consumption"]:
File [~/miniconda3/envs/tensor/lib/python3.11/site-packages/pandas/core/generic.py:6532](https://file+.vscode-resource.vscode-cdn.net/home/couzhei/code/electricity_consumption/~/miniconda3/envs/tensor/lib/python3.11/site-packages/pandas/core/generic.py:6532), in NDFrame.astype(self, dtype, copy, errors)
6528 results = [ser.astype(dtype, copy=copy) for _, ser in self.items()]
6530 else:
6531 # else, only a single dtype is given
-> 6532 new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors)
6533 res = self._constructor_from_mgr(new_data, axes=new_data.axes)
6534 return res.__finalize__(self, method="astype")
File [~/miniconda3/envs/tensor/lib/python3.11/site-packages/pandas/core/internals/managers.py:414](https://file+.vscode-resource.vscode-cdn.net/home/couzhei/code/electricity_consumption/~/miniconda3/envs/tensor/lib/python3.11/site-packages/pandas/core/internals/managers.py:414), in BaseBlockManager.astype(self, dtype, copy, errors)
411 elif using_copy_on_write():
412 copy = False
--> 414 return self.apply(
415 "astype",
...
1656 elif npdtype.kind == "O":
-> 1657 raise TypeError(f"dtype '{dtype}' not understood")
1659 return npdtype
TypeError: dtype '' not understood
Issue Description
I happened to be working with pandas.to_datetime recently and I noticed it doesn't provide the expected lower resolution datetime anyhow. A little search on the web might suggest using either astype() or .dt.to_pydatetime() methods in order to achieve such a desire.
Expected Behavior
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 datetime 100 non-null datetime <---------( Here )
1 consumption 100 non-null float64
.
.
.
Installed Versions
INSTALLED VERSIONS
commit : ba1cccd
python : 3.11.4.final.0
python-bits : 64
OS : Linux
OS-release : 5.15.0-83-generic
Version : #92~20.04.1-Ubuntu SMP Mon Aug 21 14:00:49 UTC 2023
machine : x86_64
processor : x86_64
byteorder : little
LC_ALL : None
LANG : en_US.UTF-8
LOCALE : en_US.UTF-8
pandas : 2.1.0
numpy : 1.24.3
pytz : 2023.3
dateutil : 2.8.2
setuptools : 68.0.0
pip : 23.2.1
Cython : None
pytest : None
hypothesis : None
...
zstandard : None
tzdata : 2023.3
qtpy : None
pyqt5 : None