BUG: Pandas groupby datetime and column then apply generates ValueError
See original GitHub issueCode Sample, a copy-pastable example if possible
| SYM_ROOT | TIME_M | BEST_BID | BEST_ASK | increment | genjud_incre |
|----------|----------------------------|----------|----------|-----------|--------------|
| A | 2017-01-03 09:30:00.004712 | 45.91 | 46.12 | 0 | 4680 |
| AA | 2017-01-03 09:30:00.004014 | 28.55 | 28.57 | 0 | 4680 |
# Your code here
df=pd.read_csv('stack.csv')
df['TIME_M']=pd.to_datetime(df['TIME_M'],format='%Y%m%d %H:%M:%S.%f')
df.groupby(['SYM_ROOT',df['TIME_M'].dt.date]).apply(group_increment_to_end)
def group_increment_to_end(x):
return x.iloc[0:1]
Problem description
I am trying to group my dataframe and then apply a function to each row of the dataframe. SYM_ROOT is a category variable, while TIME_M is a datetime variable.
However, I keep getting the following error:
ValueError: Key 2017-01-03 00:00:00 not in level Index([2017-01-03], dtype='object', name=u'TIME_M')
I am referring to this stackoverflow post.
I think the reason is that pandas somehow doesn’t recognize the date object in the column correctly when using the group by statement. It falsely think compares 2017-01-03 00:00:00
with TIME_M
and generates the error. After separating out the date as a single column, the problem fixes itself.
But I think it will be beneficial if pandas can recognize the date object correctly in the columns …
Output of pd.show_versions()
[paste the output of pd.show_versions()
here below this line]
INSTALLED VERSIONS
commit: None python: 2.7.14.final.0 python-bits: 64 OS: Linux OS-release: 3.10.0-693.21.1.el7.x86_64 machine: x86_64 processor: x86_64 byteorder: little LC_ALL: None LANG: en_CA.UTF-8 LOCALE: None.None
pandas: 0.22.0 pytest: 3.3.2 pip: 9.0.1 setuptools: 38.4.0 Cython: 0.27.3 numpy: 1.14.0 scipy: 1.0.0 pyarrow: None xarray: None IPython: 5.4.1 sphinx: 1.6.6 patsy: 0.5.0 dateutil: 2.6.1 pytz: 2017.3 blosc: None bottleneck: 1.2.1 tables: 3.4.2 numexpr: 2.6.4 feather: None matplotlib: 2.1.2 openpyxl: 2.4.10 xlrd: 1.1.0 xlwt: 1.3.0 xlsxwriter: 1.0.2 lxml: 4.1.1 bs4: 4.6.0 html5lib: 1.0.1 sqlalchemy: 1.2.1 pymysql: None psycopg2: None jinja2: 2.10 s3fs: None fastparquet: None pandas_gbq: None pandas_datareader: None
Issue Analytics
- State:
- Created 5 years ago
- Comments:12 (9 by maintainers)
Top GitHub Comments
@maxzinkus Yeah, this only started working in 1.1.0.
Simpler example:
From the traceback, looks like it’s an issue in indexing a (Multi?)Index with dates with a
Timestamp
Investigation and PRs welcome!
Traceback