Skip to content

BUG: AttributeError about dateutil.relativedelta when calling pd.read_json(json_data) #59227

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
2 of 3 tasks
cspzyy opened this issue Jul 11, 2024 · 5 comments
Open
2 of 3 tasks
Assignees
Labels
Bug Needs Triage Issue that has not been reviewed by a pandas team member

Comments

@cspzyy
Copy link

cspzyy commented Jul 11, 2024

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

import pandas as pd
import json

df = pd.read_json(json.dumps(json_data), orient='table')

Issue Description

When I used df.read_json(json_data), It calls the function pandas._libs.tslibs.parsing.dateutil_parse() in pandas package. The specific path is python3.8/site-packages/pandas/_libs/tslibs/parsing.pyx:692. Then AttributeError occurs: AttributeError: type object 'relativedelta' has no attribute 'relativedelta'

Now I'm desperate to process this json_data, but with this error I can't work with it correctly. Besides, pandas has no setup.py in the root directory, so I can't correct and use my custom adjustment.

DESPERATE to hear from u!!!! And THANKS so much for paying attention to this!

Expected Behavior

The source code uses from dateutil.relativedelta import relativedelta, thus when code in the function says relativedelta.relativedelta, the executor will be confused.

I consider if u can try ret+relativedelta()? Or anything else will work

Installed Versions

pandas 2.0.3

@cspzyy cspzyy added Bug Needs Triage Issue that has not been reviewed by a pandas team member labels Jul 11, 2024
@asishm
Copy link
Contributor

asishm commented Jul 11, 2024

Thanks for the report, can you please provide a copy pastable reproducible example? see - https://matthewrocklin.com/minimal-bug-reports

@cspzyy
Copy link
Author

cspzyy commented Jul 12, 2024

Thanks for the report, can you please provide a copy pastable reproducible example? see - https://matthewrocklin.com/minimal-bug-reports

imported libraries are:
import pandas as pd
import json

The trigger json_data is as following, and I write df = pd.read_json(json.dumps(json_data), orient='table') for the data. Then the AttributeError occured. Please check it, thanks a lot!

json_data = {'schema': {'fields': [{'name': 'index', 'type': 'integer'}, {'name': 'Season', 'type': 'string'}, {'name': 'Timeslot_Times_listed_are_Eastern_time', 'type': 'string'}, {'name': 'Season_premiere', 'type': 'string'}, {'name': 'Season_finale', 'type': 'string'}, {'name': 'TV_season', 'type': 'string'}, {'name': 'Ranking', 'type': 'string'}, {'name': 'Viewers_in_millions_of_households', 'type': 'string'}], 'primaryKey': ['index'], 'pandas_version': '1.4.0'}, 'data': [{'index': 0, 'Season': '1st', 'Timeslot_Times_listed_are_Eastern_time': 'Thursday, 10:00 p.m.', 'Season_premiere': 'September 18, 1994', 'Season_finale': 'May 22, 1995', 'TV_season': '1994–1995', 'Ranking': '29', 'Viewers_in_millions_of_households': '11.2'}, {'index': 1, 'Season': '2nd', 'Timeslot_Times_listed_are_Eastern_time': 'Monday 10:00 p.m.', 'Season_premiere': 'September 18, 1995', 'Season_finale': 'May 20, 1996', 'TV_season': '1995–1996', 'Ranking': '24', 'Viewers_in_millions_of_households': '11.4'}, {'index': 2, 'Season': '3rd', 'Timeslot_Times_listed_are_Eastern_time': 'Monday 10:00 p.m.', 'Season_premiere': 'September 16, 1996', 'Season_finale': 'May 19, 1997', 'TV_season': '1996–1997', 'Ranking': '30', 'Viewers_in_millions_of_households': '10.2'}, {'index': 3, 'Season': '4th', 'Timeslot_Times_listed_are_Eastern_time': 'Wednesday 10:00 p.m.', 'Season_premiere': 'October 1, 1997', 'Season_finale': 'May 13, 1998', 'TV_season': '1997–1998', 'Ranking': '39', 'Viewers_in_millions_of_households': '8.9'}, {'index': 4, 'Season': '5th', 'Timeslot_Times_listed_are_Eastern_time': 'Wednesday 10:00 p.m.', 'Season_premiere': 'September 30, 1998', 'Season_finale': 'May 19, 1999', 'TV_season': '1998–1999', 'Ranking': '73', 'Viewers_in_millions_of_households': '9.9'}]}

@cspzyy
Copy link
Author

cspzyy commented Jul 12, 2024

But that's okay, I'm trying handling this json_data with raw python code. Thanks for your attention again!

Also, wish u guys to fix this up in the future.^_^

@ritwizsinha
Copy link
Contributor

take

@ritwizsinha
Copy link
Contributor

@cspzyy I am a bit confused, what the issue is here, I created the json_data in python code and passed it through to the read_json function. It simply errored out saying it needed a file. Thus had to wrap the string in the StringIO and then there were no issues

json_data = {'schema': {'fields': [{'name': 'index', 'type': 'integer'}, {'name': 'Season', 'type': 'string'}, {'name': 'Timeslot_Times_listed_are_Eastern_time', 'type': 'string'}, {'name': 'Season_premiere', 'type': 'string'}, {'name': 'Season_finale', 'type': 'string'}, {'name': 'TV_season', 'type': 'string'}, {'name': 'Ranking', 'type': 'string'}, {'name': 'Viewers_in_millions_of_households', 'type': 'string'}], 'primaryKey': ['index'], 'pandas_version': '1.4.0'}, 'data': [{'index': 0, 'Season': '1st', 'Timeslot_Times_listed_are_Eastern_time': 'Thursday, 10:00 p.m.', 'Season_premiere': 'September 18, 1994', 'Season_finale': 'May 22, 1995', 'TV_season': '1994–1995', 'Ranking': '29', 'Viewers_in_millions_of_households': '11.2'}, {'index': 1, 'Season': '2nd', 'Timeslot_Times_listed_are_Eastern_time': 'Monday 10:00 p.m.', 'Season_premiere': 'September 18, 1995', 'Season_finale': 'May 20, 1996', 'TV_season': '1995–1996', 'Ranking': '24', 'Viewers_in_millions_of_households': '11.4'}, {'index': 2, 'Season': '3rd', 'Timeslot_Times_listed_are_Eastern_time': 'Monday 10:00 p.m.', 'Season_premiere': 'September 16, 1996', 'Season_finale': 'May 19, 1997', 'TV_season': '1996–1997', 'Ranking': '30', 'Viewers_in_millions_of_households': '10.2'}, {'index': 3, 'Season': '4th', 'Timeslot_Times_listed_are_Eastern_time': 'Wednesday 10:00 p.m.', 'Season_premiere': 'October 1, 1997', 'Season_finale': 'May 13, 1998', 'TV_season': '1997–1998', 'Ranking': '39', 'Viewers_in_millions_of_households': '8.9'}, {'index': 4, 'Season': '5th', 'Timeslot_Times_listed_are_Eastern_time': 'Wednesday 10:00 p.m.', 'Season_premiere': 'September 30, 1998', 'Season_finale': 'May 19, 1999', 'TV_season': '1998–1999', 'Ranking': '73', 'Viewers_in_millions_of_households': '9.9'}]}


import pandas as pd
import json
from io import StringIO

df = pd.read_json(StringIO(json.dumps(json_data)), orient='table')
print(df)

I am on the latest version in main, maybe this issue has already been fixed?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Needs Triage Issue that has not been reviewed by a pandas team member
Projects
None yet
Development

No branches or pull requests

3 participants