-
-
Notifications
You must be signed in to change notification settings - Fork 18.3k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
API: make attribute setting de-facto insert column #9033
Comments
I think this change should be considered very very very carefully. It is a gigantic change to the API. It means that any later additions of new methods or attributes to DataFrame may unexpectedly break tons of code. For instance, if I have code that does |
@BrenBarn Thanks for commenting, you've convinced me. This indeed seems very dangerous. |
yeh, this was sort of pie-in-the-sky. To promote consistency. In theory its a nice idea, but by auto-converting to a column, then you pretty much preclude future method expansion. Fundamentally there is really ONE way to create columns, namely |
Personally, this would break my library as attribute setting is hacked in. I'm not sure if it would affect GeoPandas, since they have honest-to-goodness dataframe subclasses, and I'm using composite classes. Not that I think this should hold you back from a major release, but personally I'm not a fan of this behavior. The attribute setting syntax is pretty consistent throughout Python, and it's not really that difficult to do If you do put this through, can you do a small writeup about how to use the |
@hugadams you might find this interesting reading (near the bottom): http://pandas.pydata.org/pandas-docs/stable/internals.html |
Ha wow, I need to keep up I guess! On Thu, May 21, 2015 at 12:24 PM, jreback notifications@github.com wrote:
Adam Hughes |
closeble? |
xref #8994
xref #5904
xref #8572
This might be a bit controversial, but the issues raised in #8994 and #5904
point to some continued confusion w.r.t. attribute setting 'being' column setting
so if we now have
is an attribute set
it could be a column set
e.g. de-facto
df['C'] = 5
If someone actually wants an attribute to 'stick' around. (meaning they would have to intercept the
__finalize__
methods and actually deal with them properly, then I think it is reasonable to also have them add to the_internal_names
as well (see #8572)So basically would try to set a column (unless its an internal name).
(note that
getattr
is de-facto already equivalent to__getitem__
, e.g.df.B === df['B']
)(don't mind my JS equivalence notion :)
The text was updated successfully, but these errors were encountered: