如何在Pandas中将'Month(String)YYYY'转换为'YYYY-MM-DD'?

hwazgwia  于 2023-11-15  发布在  其他
关注(0)|答案(2)|浏览(77)

我有如下数据:

|   |Period         | Total
--------------------------------
|0  |January 2000   |49045412
|1  |February 2000  |49306303
|2  |March 2000     |60443541
|3  |April 2000     |58286680
|4  |May 2000       |60533783

字符串
为了将Period列转换为所需的输出,我尝试了有效的转换,应该可以工作

time['Month'] = pd.to_datetime(df['Period'])


它在这个月的大部分时间里都是有效的,但有几个月是失败的,如下所示

|   |Period         | Total     |Month
-----------------------------------------
0   |January 2000   |49045412   |2000-01-01
1   |February 2000  |49306303   |2000-02-01
2   |March 2000     |60443541   |2000-03-01
3   |April 2000     |58286680   |2000-04-01
4   |May 2000       |60533783   |2000-05-01
5   |June 2000      |64903295   |NaT
6   |July 2000      |67346377   |NaT
7   |August 2000    |66256804   |NaT
8   |September 2000 |55900504   |NaT
9   |October 2000   |58373996   |NaT
10  |November 2000  |55590325   |NaT
11  |December 2000  |54822970   |NaT

beq87vna

beq87vna1#

你所尝试的对我来说是有效的,更具体的一个可以使用to_datetimeformat arg。

df['Month'] = pd.to_datetime(df.Period, format='%B %Y')

字符串

输出

Period          Total       Month
0   January 2000    49045412    2000-01-01
1   February 2000   49306303    2000-02-01
2   March 2000      60443541    2000-03-01
3   April 2000      58286680    2000-04-01
4   May 2000        60533783    2000-05-01
5   June 2000       64903295    2000-06-01
6   July 2000       67346377    2000-07-01
7   August 2000     66256804    2000-08-01
8   September 2000  55900504    2000-09-01
9   October 2000    58373996    2000-10-01
10  November 2000   55590325    2000-11-01
11  December 2000   54822970    2000-12-01

jecbmhm3

jecbmhm32#

d = ['September 2021', 'September 2000', 'April 2000']
df = pd.DataFrame({'period': d})

字符串
之前:

period
0   September 2021
1   September 2000
2   April 2000


修复:

df.period = pd.DatetimeIndex(df.period)


之后:

period
0   2021-09-01
1   2000-09-01
2   2000-04-01

相关问题