-
-
Notifications
You must be signed in to change notification settings - Fork 18.3k
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
Maintain Dict Ordering with Concat #21512
Changes from all commits
87bb1ac
f9d105e
b044e04
eaa7cc0
6869e2c
e9561fe
53aca81
726755f
a7aa052
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -110,3 +110,4 @@ doc/source/styled.xlsx | |
doc/source/templates/ | ||
env/ | ||
doc/source/savefig/ | ||
*my-dev-test.py | ||
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
""" | ||
concat routines | ||
""" | ||
|
||
from collections import OrderedDict | ||
import numpy as np | ||
from pandas import compat, DataFrame, Series, Index, MultiIndex | ||
from pandas.core.index import (_get_objs_combined_axis, | ||
|
@@ -250,7 +250,10 @@ def __init__(self, objs, axis=0, join='outer', join_axes=None, | |
|
||
if isinstance(objs, dict): | ||
if keys is None: | ||
keys = sorted(objs) | ||
if not isinstance(objs, OrderedDict): | ||
keys = sorted(objs) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Normal dicts are ordered too in python3.6+, that must be checked too. There is a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not sure if we already took a stance on this as a project, but the orderedness of dicts in 3.6 is considered an implementation detail of cpython, while it will be a language feature starting from 3.7 . So in principle in 3.6 users should not rely on it, and we should not assume they do. @topper-123 's comment still holds I think, but for 3.7 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, given that Python 3.6 is at 3.6.5 now, and its's being formalised in 3.7, I think this is quite safe. They're not going to change implementation now... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is very simliar to in structure to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @jreback you mean use: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yes that's the point i am raising, I want a refactor here. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. So, from |
||
else: | ||
keys = objs | ||
objs = [objs[k] for k in keys] | ||
else: | ||
objs = list(objs) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what is this from?