我遵循了此线程中的说明,但是遇到了问题。
Converting month number to datetime in pandas
我认为这可能与我的数据框中有一个附加变量有关,但我不确定。这是我的数据框:
0 Month Temp
1 0 2
2 1 4
3 2 3
我想要的是:
0 Month Temp
1 1990-01 2
2 1990-02 4
3 1990-03 3
这是我尝试过的:
df= pd.to_datetime('1990-' + df.Month.astype(int).astype(str) + '-1', format = '%Y-%m')
我收到此错误:
ValueError:时间数据1990-0-1与指定的格式不匹配
答案 0 :(得分:0)
IIUC,我们可以手动创建日期时间对象,然后将其格式化为期望的输出:
m = np.where(df['Month'].eq(0),
df['Month'].add(1), df['Month']
).astype(int).astype(str)
df['date'] = pd.to_datetime(
"1900" + "-" + pd.Series(m), format="%Y-%m"
).dt.strftime("%Y-%m")
print(df)
Month Temp date
0 0 2 1900-01
1 1 4 1900-02
2 2 3 1900-03
答案 1 :(得分:0)
这是我为您提供的解决方案
import pandas as pd
Data = {
'Month' : [1,2,3],
'Temp' : [2,4,3]
}
data = pd.DataFrame(Data)
data['Month']= pd.to_datetime('1990-' + data.Month.astype(int).astype(str) + '-1', format = '%Y-%m').dt.to_period('M')
Month Temp
0 1990-01 2
1 1990-02 4
2 1990-03 3
如果您希望Month [0]表示1,则可以有条件地添加该数字
答案 2 :(得分:0)
尝试使用.dt.strftime()来显示日期,因为日期时间值默认情况下以%Y-%m-%d 00:00:00格式存储。
import pandas as pd
df= pd.DataFrame({'month':[1,2,3]})
df['date']=pd.to_datetime(df['month'], format="%m").dt.strftime('%Y-%m')
print(df)
您必须明确告诉熊猫在月份中加1,因为它们的范围是0-11,而不是1-12。
df=pd.DataFrame({'month':[11,1,2,3,0]})
df['date']=pd.to_datetime(df['month']+1, format='%m').dt.strftime('1990-%m')