繁体   English   中英

创建月份和年份列中没有天数的日期 pandas dataframe

[英]Create Dates without days present in month & year columns pandas dataframe

  1. 我想使用 lambda function 创建一个名为“Month_Year”的新列。其值应为:2020 年 1 月为“01-01-2020”,2020 年 2 月为“01-02-2020”,依此类推。 数据集仅包含 month:{jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec} obj dtype。 我必须将这个 month_names 转换为 month_numbers。 数据集还有年份列,其中包含 2020 - 2022 int dtype 的数据。 我想使用月和年为此数据集创建日期。 在此处输入图像描述
{year = pd.to_datetime(df1.Year, format='%Y').dt.year
df1['Month'] = pd.to_datetime(df1.Month, format='%b').dt.month}


cal = calendar.Calendar()
for i in cal.itermonthdays3(year=year, month=month):
    print(i)
/// Error: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
{2nd way}`
def date_iter(year, month):
    for i in range(1, calendar.monthrange(year, month) + 1):
        yield date(year, month, i)

for d in date_iter(year, month):
    print(d)
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

如何根据月份和年份列创建日期列?

尝试:

df["Month_Year"] = pd.to_datetime(df["Month"] + "-" + df["Year"].astype(str))
print(df)

印刷:

   Month  Year Month_Year
0    Jan  2020 2020-01-01
1    Feb  2021 2021-02-01
2    Mar  2022 2022-03-01
3    Apr  2020 2020-04-01
4    May  2021 2021-05-01
5    Jun  2022 2022-06-01
6    Jul  2020 2020-07-01
7    Aug  2021 2021-08-01
8    Sep  2022 2022-09-01
9    Oct  2020 2020-10-01
10   Nov  2021 2021-11-01
11   Dec  2022 2022-12-01

输入 dataframe:

   Month  Year
0    Jan  2020
1    Feb  2021
2    Mar  2022
3    Apr  2020
4    May  2021
5    Jun  2022
6    Jul  2020
7    Aug  2021
8    Sep  2022
9    Oct  2020
10   Nov  2021
11   Dec  2022

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM