Extending pandas generates warning about column creation
I have a class that extends pandas
class teste(pd.DataFrame):
def __init__(self, data=None, index=None, columns=None, dtype=None,
copy=False, atrib_0 = '', atrib_1 = None, atrib_2 = ):
super(teste,self).__init__(data=data, index=index, columns=columns, dtype=dtype, copy=copy)
self.atrib_0 = atrib_0
self.atrib_1 = atrib_1
self.atrib_2 = atrib_2
return
I created an instance of that class using the following code:
t = teste(pandas_df,
atrib_0 = 'NAME',
atrib_1 = 'D',
atrib_2 = ['A','B','C','D'],
)
But doing that generates a UserWarning for the atrib_2
, saying Pandas doesn't allow columns to be created via a new attribute name.
Since I am not creating a new column, but attributing a property to that instance of my class, I believe it gets confused because it's possible to access existing columns using the code df.new_column =
. Any new attribute that gets a list generates that warning.
Does anybody know how to get rid of it? What am I doing wrong? Any help is much appreciated.
python pandas class
add a comment |
I have a class that extends pandas
class teste(pd.DataFrame):
def __init__(self, data=None, index=None, columns=None, dtype=None,
copy=False, atrib_0 = '', atrib_1 = None, atrib_2 = ):
super(teste,self).__init__(data=data, index=index, columns=columns, dtype=dtype, copy=copy)
self.atrib_0 = atrib_0
self.atrib_1 = atrib_1
self.atrib_2 = atrib_2
return
I created an instance of that class using the following code:
t = teste(pandas_df,
atrib_0 = 'NAME',
atrib_1 = 'D',
atrib_2 = ['A','B','C','D'],
)
But doing that generates a UserWarning for the atrib_2
, saying Pandas doesn't allow columns to be created via a new attribute name.
Since I am not creating a new column, but attributing a property to that instance of my class, I believe it gets confused because it's possible to access existing columns using the code df.new_column =
. Any new attribute that gets a list generates that warning.
Does anybody know how to get rid of it? What am I doing wrong? Any help is much appreciated.
python pandas class
1
You can't use dot notation to create a new column, only bracket notation. Once the column is created, then you can use dot notation to access it. See this SO answer and this repo issue for a more in-depth discussion.
– dmitriys
Nov 23 '18 at 21:26
Yes, my mistake when I commented about why I though the warning was showing. I'll edit the question.
– Gaduks
Nov 23 '18 at 21:29
It's just a warning. It works as expected right?
– ayhan
Nov 23 '18 at 21:40
Yes, I believe it's just the warning, I encountered no other issues so far. But I think there must be a way to do it without generating it. And I am not sure, but I think I must not be doing it right, since the warning was generated.
– Gaduks
Nov 23 '18 at 21:47
add a comment |
I have a class that extends pandas
class teste(pd.DataFrame):
def __init__(self, data=None, index=None, columns=None, dtype=None,
copy=False, atrib_0 = '', atrib_1 = None, atrib_2 = ):
super(teste,self).__init__(data=data, index=index, columns=columns, dtype=dtype, copy=copy)
self.atrib_0 = atrib_0
self.atrib_1 = atrib_1
self.atrib_2 = atrib_2
return
I created an instance of that class using the following code:
t = teste(pandas_df,
atrib_0 = 'NAME',
atrib_1 = 'D',
atrib_2 = ['A','B','C','D'],
)
But doing that generates a UserWarning for the atrib_2
, saying Pandas doesn't allow columns to be created via a new attribute name.
Since I am not creating a new column, but attributing a property to that instance of my class, I believe it gets confused because it's possible to access existing columns using the code df.new_column =
. Any new attribute that gets a list generates that warning.
Does anybody know how to get rid of it? What am I doing wrong? Any help is much appreciated.
python pandas class
I have a class that extends pandas
class teste(pd.DataFrame):
def __init__(self, data=None, index=None, columns=None, dtype=None,
copy=False, atrib_0 = '', atrib_1 = None, atrib_2 = ):
super(teste,self).__init__(data=data, index=index, columns=columns, dtype=dtype, copy=copy)
self.atrib_0 = atrib_0
self.atrib_1 = atrib_1
self.atrib_2 = atrib_2
return
I created an instance of that class using the following code:
t = teste(pandas_df,
atrib_0 = 'NAME',
atrib_1 = 'D',
atrib_2 = ['A','B','C','D'],
)
But doing that generates a UserWarning for the atrib_2
, saying Pandas doesn't allow columns to be created via a new attribute name.
Since I am not creating a new column, but attributing a property to that instance of my class, I believe it gets confused because it's possible to access existing columns using the code df.new_column =
. Any new attribute that gets a list generates that warning.
Does anybody know how to get rid of it? What am I doing wrong? Any help is much appreciated.
python pandas class
python pandas class
edited Nov 23 '18 at 21:31
Gaduks
asked Nov 23 '18 at 18:19
GaduksGaduks
364211
364211
1
You can't use dot notation to create a new column, only bracket notation. Once the column is created, then you can use dot notation to access it. See this SO answer and this repo issue for a more in-depth discussion.
– dmitriys
Nov 23 '18 at 21:26
Yes, my mistake when I commented about why I though the warning was showing. I'll edit the question.
– Gaduks
Nov 23 '18 at 21:29
It's just a warning. It works as expected right?
– ayhan
Nov 23 '18 at 21:40
Yes, I believe it's just the warning, I encountered no other issues so far. But I think there must be a way to do it without generating it. And I am not sure, but I think I must not be doing it right, since the warning was generated.
– Gaduks
Nov 23 '18 at 21:47
add a comment |
1
You can't use dot notation to create a new column, only bracket notation. Once the column is created, then you can use dot notation to access it. See this SO answer and this repo issue for a more in-depth discussion.
– dmitriys
Nov 23 '18 at 21:26
Yes, my mistake when I commented about why I though the warning was showing. I'll edit the question.
– Gaduks
Nov 23 '18 at 21:29
It's just a warning. It works as expected right?
– ayhan
Nov 23 '18 at 21:40
Yes, I believe it's just the warning, I encountered no other issues so far. But I think there must be a way to do it without generating it. And I am not sure, but I think I must not be doing it right, since the warning was generated.
– Gaduks
Nov 23 '18 at 21:47
1
1
You can't use dot notation to create a new column, only bracket notation. Once the column is created, then you can use dot notation to access it. See this SO answer and this repo issue for a more in-depth discussion.
– dmitriys
Nov 23 '18 at 21:26
You can't use dot notation to create a new column, only bracket notation. Once the column is created, then you can use dot notation to access it. See this SO answer and this repo issue for a more in-depth discussion.
– dmitriys
Nov 23 '18 at 21:26
Yes, my mistake when I commented about why I though the warning was showing. I'll edit the question.
– Gaduks
Nov 23 '18 at 21:29
Yes, my mistake when I commented about why I though the warning was showing. I'll edit the question.
– Gaduks
Nov 23 '18 at 21:29
It's just a warning. It works as expected right?
– ayhan
Nov 23 '18 at 21:40
It's just a warning. It works as expected right?
– ayhan
Nov 23 '18 at 21:40
Yes, I believe it's just the warning, I encountered no other issues so far. But I think there must be a way to do it without generating it. And I am not sure, but I think I must not be doing it right, since the warning was generated.
– Gaduks
Nov 23 '18 at 21:47
Yes, I believe it's just the warning, I encountered no other issues so far. But I think there must be a way to do it without generating it. And I am not sure, but I think I must not be doing it right, since the warning was generated.
– Gaduks
Nov 23 '18 at 21:47
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53451398%2fextending-pandas-generates-warning-about-column-creation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53451398%2fextending-pandas-generates-warning-about-column-creation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
You can't use dot notation to create a new column, only bracket notation. Once the column is created, then you can use dot notation to access it. See this SO answer and this repo issue for a more in-depth discussion.
– dmitriys
Nov 23 '18 at 21:26
Yes, my mistake when I commented about why I though the warning was showing. I'll edit the question.
– Gaduks
Nov 23 '18 at 21:29
It's just a warning. It works as expected right?
– ayhan
Nov 23 '18 at 21:40
Yes, I believe it's just the warning, I encountered no other issues so far. But I think there must be a way to do it without generating it. And I am not sure, but I think I must not be doing it right, since the warning was generated.
– Gaduks
Nov 23 '18 at 21:47