Combining dataframe year and month into new object Python
I have a dataframe with separated columns of just Year and Month like:
Year Month
2001 1
2001 2
2001 3
.
.
2010 1
2010 2
.
Converting to pd.datetime
using pd.to_datetime(df[['year', 'month']])
requires days to match the format so I get the error:
ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day] is missing
I felt like I could just fill a new column with Day = 1 repeated but I would like to avoid this because I want to create a time series by the Year-Month only.
Is there a way to map Year-Month to a date to graph properly?
python python-3.x pandas date dataframe
add a comment |
I have a dataframe with separated columns of just Year and Month like:
Year Month
2001 1
2001 2
2001 3
.
.
2010 1
2010 2
.
Converting to pd.datetime
using pd.to_datetime(df[['year', 'month']])
requires days to match the format so I get the error:
ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day] is missing
I felt like I could just fill a new column with Day = 1 repeated but I would like to avoid this because I want to create a time series by the Year-Month only.
Is there a way to map Year-Month to a date to graph properly?
python python-3.x pandas date dataframe
add a comment |
I have a dataframe with separated columns of just Year and Month like:
Year Month
2001 1
2001 2
2001 3
.
.
2010 1
2010 2
.
Converting to pd.datetime
using pd.to_datetime(df[['year', 'month']])
requires days to match the format so I get the error:
ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day] is missing
I felt like I could just fill a new column with Day = 1 repeated but I would like to avoid this because I want to create a time series by the Year-Month only.
Is there a way to map Year-Month to a date to graph properly?
python python-3.x pandas date dataframe
I have a dataframe with separated columns of just Year and Month like:
Year Month
2001 1
2001 2
2001 3
.
.
2010 1
2010 2
.
Converting to pd.datetime
using pd.to_datetime(df[['year', 'month']])
requires days to match the format so I get the error:
ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day] is missing
I felt like I could just fill a new column with Day = 1 repeated but I would like to avoid this because I want to create a time series by the Year-Month only.
Is there a way to map Year-Month to a date to graph properly?
python python-3.x pandas date dataframe
python python-3.x pandas date dataframe
asked Nov 12 '18 at 22:59
HelloToEarthHelloToEarth
435214
435214
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
There is not such thing as a month only datetime
thingy.
pd.to_datetime
assign
creates a copy of df
with the columns as specified in the arguments`.
As @timgeb stated:
Explanation:
df.assign(day=1)
is a quick way to create a temporary dataframe with a'day'
column without having to modify your original dataframe.
pd.to_datetime(df.assign(day=1))
0 2001-01-01
1 2001-02-01
2 2001-03-01
3 2010-01-01
4 2010-02-01
dtype: datetime64[ns]
to_period
You may want to use to_period
.
pd.to_datetime(df.assign(day=1)).dt.to_period('M')
0 2001-01
1 2001-02
2 2001-03
3 2010-01
4 2010-02
dtype: object
2
Explanation:df.assign(day=1)
is a quick way to create a temporary dataframe with a'day'
column without having to modify your original dataframe.
– timgeb
Nov 12 '18 at 23:02
I've got values associated with each year and month. I know this wasn't addressed in the original question but is there a way to make these temp values inside the dataframe? It works if I keep the original index, slice it off as a separate df and then add them back into the original df.
– HelloToEarth
Nov 12 '18 at 23:17
IIUC:df.assign(MonthPeriod=df[['Year', 'Month']].assign(day=1).dt.to_period('M'))
– piRSquared
Nov 12 '18 at 23:19
@HelloToEarth if that isn't what you meant, you'll need to clarify. I'm sure the answer is, yes but I need to understand what you mean first (-:
– piRSquared
Nov 12 '18 at 23:20
add a comment |
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%2f53271332%2fcombining-dataframe-year-and-month-into-new-object-python%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
There is not such thing as a month only datetime
thingy.
pd.to_datetime
assign
creates a copy of df
with the columns as specified in the arguments`.
As @timgeb stated:
Explanation:
df.assign(day=1)
is a quick way to create a temporary dataframe with a'day'
column without having to modify your original dataframe.
pd.to_datetime(df.assign(day=1))
0 2001-01-01
1 2001-02-01
2 2001-03-01
3 2010-01-01
4 2010-02-01
dtype: datetime64[ns]
to_period
You may want to use to_period
.
pd.to_datetime(df.assign(day=1)).dt.to_period('M')
0 2001-01
1 2001-02
2 2001-03
3 2010-01
4 2010-02
dtype: object
2
Explanation:df.assign(day=1)
is a quick way to create a temporary dataframe with a'day'
column without having to modify your original dataframe.
– timgeb
Nov 12 '18 at 23:02
I've got values associated with each year and month. I know this wasn't addressed in the original question but is there a way to make these temp values inside the dataframe? It works if I keep the original index, slice it off as a separate df and then add them back into the original df.
– HelloToEarth
Nov 12 '18 at 23:17
IIUC:df.assign(MonthPeriod=df[['Year', 'Month']].assign(day=1).dt.to_period('M'))
– piRSquared
Nov 12 '18 at 23:19
@HelloToEarth if that isn't what you meant, you'll need to clarify. I'm sure the answer is, yes but I need to understand what you mean first (-:
– piRSquared
Nov 12 '18 at 23:20
add a comment |
There is not such thing as a month only datetime
thingy.
pd.to_datetime
assign
creates a copy of df
with the columns as specified in the arguments`.
As @timgeb stated:
Explanation:
df.assign(day=1)
is a quick way to create a temporary dataframe with a'day'
column without having to modify your original dataframe.
pd.to_datetime(df.assign(day=1))
0 2001-01-01
1 2001-02-01
2 2001-03-01
3 2010-01-01
4 2010-02-01
dtype: datetime64[ns]
to_period
You may want to use to_period
.
pd.to_datetime(df.assign(day=1)).dt.to_period('M')
0 2001-01
1 2001-02
2 2001-03
3 2010-01
4 2010-02
dtype: object
2
Explanation:df.assign(day=1)
is a quick way to create a temporary dataframe with a'day'
column without having to modify your original dataframe.
– timgeb
Nov 12 '18 at 23:02
I've got values associated with each year and month. I know this wasn't addressed in the original question but is there a way to make these temp values inside the dataframe? It works if I keep the original index, slice it off as a separate df and then add them back into the original df.
– HelloToEarth
Nov 12 '18 at 23:17
IIUC:df.assign(MonthPeriod=df[['Year', 'Month']].assign(day=1).dt.to_period('M'))
– piRSquared
Nov 12 '18 at 23:19
@HelloToEarth if that isn't what you meant, you'll need to clarify. I'm sure the answer is, yes but I need to understand what you mean first (-:
– piRSquared
Nov 12 '18 at 23:20
add a comment |
There is not such thing as a month only datetime
thingy.
pd.to_datetime
assign
creates a copy of df
with the columns as specified in the arguments`.
As @timgeb stated:
Explanation:
df.assign(day=1)
is a quick way to create a temporary dataframe with a'day'
column without having to modify your original dataframe.
pd.to_datetime(df.assign(day=1))
0 2001-01-01
1 2001-02-01
2 2001-03-01
3 2010-01-01
4 2010-02-01
dtype: datetime64[ns]
to_period
You may want to use to_period
.
pd.to_datetime(df.assign(day=1)).dt.to_period('M')
0 2001-01
1 2001-02
2 2001-03
3 2010-01
4 2010-02
dtype: object
There is not such thing as a month only datetime
thingy.
pd.to_datetime
assign
creates a copy of df
with the columns as specified in the arguments`.
As @timgeb stated:
Explanation:
df.assign(day=1)
is a quick way to create a temporary dataframe with a'day'
column without having to modify your original dataframe.
pd.to_datetime(df.assign(day=1))
0 2001-01-01
1 2001-02-01
2 2001-03-01
3 2010-01-01
4 2010-02-01
dtype: datetime64[ns]
to_period
You may want to use to_period
.
pd.to_datetime(df.assign(day=1)).dt.to_period('M')
0 2001-01
1 2001-02
2 2001-03
3 2010-01
4 2010-02
dtype: object
edited Nov 12 '18 at 23:17
answered Nov 12 '18 at 23:00
piRSquaredpiRSquared
153k22144287
153k22144287
2
Explanation:df.assign(day=1)
is a quick way to create a temporary dataframe with a'day'
column without having to modify your original dataframe.
– timgeb
Nov 12 '18 at 23:02
I've got values associated with each year and month. I know this wasn't addressed in the original question but is there a way to make these temp values inside the dataframe? It works if I keep the original index, slice it off as a separate df and then add them back into the original df.
– HelloToEarth
Nov 12 '18 at 23:17
IIUC:df.assign(MonthPeriod=df[['Year', 'Month']].assign(day=1).dt.to_period('M'))
– piRSquared
Nov 12 '18 at 23:19
@HelloToEarth if that isn't what you meant, you'll need to clarify. I'm sure the answer is, yes but I need to understand what you mean first (-:
– piRSquared
Nov 12 '18 at 23:20
add a comment |
2
Explanation:df.assign(day=1)
is a quick way to create a temporary dataframe with a'day'
column without having to modify your original dataframe.
– timgeb
Nov 12 '18 at 23:02
I've got values associated with each year and month. I know this wasn't addressed in the original question but is there a way to make these temp values inside the dataframe? It works if I keep the original index, slice it off as a separate df and then add them back into the original df.
– HelloToEarth
Nov 12 '18 at 23:17
IIUC:df.assign(MonthPeriod=df[['Year', 'Month']].assign(day=1).dt.to_period('M'))
– piRSquared
Nov 12 '18 at 23:19
@HelloToEarth if that isn't what you meant, you'll need to clarify. I'm sure the answer is, yes but I need to understand what you mean first (-:
– piRSquared
Nov 12 '18 at 23:20
2
2
Explanation:
df.assign(day=1)
is a quick way to create a temporary dataframe with a 'day'
column without having to modify your original dataframe.– timgeb
Nov 12 '18 at 23:02
Explanation:
df.assign(day=1)
is a quick way to create a temporary dataframe with a 'day'
column without having to modify your original dataframe.– timgeb
Nov 12 '18 at 23:02
I've got values associated with each year and month. I know this wasn't addressed in the original question but is there a way to make these temp values inside the dataframe? It works if I keep the original index, slice it off as a separate df and then add them back into the original df.
– HelloToEarth
Nov 12 '18 at 23:17
I've got values associated with each year and month. I know this wasn't addressed in the original question but is there a way to make these temp values inside the dataframe? It works if I keep the original index, slice it off as a separate df and then add them back into the original df.
– HelloToEarth
Nov 12 '18 at 23:17
IIUC:
df.assign(MonthPeriod=df[['Year', 'Month']].assign(day=1).dt.to_period('M'))
– piRSquared
Nov 12 '18 at 23:19
IIUC:
df.assign(MonthPeriod=df[['Year', 'Month']].assign(day=1).dt.to_period('M'))
– piRSquared
Nov 12 '18 at 23:19
@HelloToEarth if that isn't what you meant, you'll need to clarify. I'm sure the answer is, yes but I need to understand what you mean first (-:
– piRSquared
Nov 12 '18 at 23:20
@HelloToEarth if that isn't what you meant, you'll need to clarify. I'm sure the answer is, yes but I need to understand what you mean first (-:
– piRSquared
Nov 12 '18 at 23:20
add a comment |
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%2f53271332%2fcombining-dataframe-year-and-month-into-new-object-python%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