2 回答

TA贡献1786条经验 获得超11个赞
IIUC,我们可以使用一个函数来清理你的日期,然后沿着轴 =1 连接
def create_datetime(dataframe, year="year", month="month", day="day"):
dataframe["year"] = pd.to_datetime(
df[year].astype(str) + "-" + df[month].astype(str) + "-" + df[day].astype(str),
format="%Y-%m-%d",
)
dataframe = dataframe.drop([month, day], axis=1)
dataframe = dataframe.rename(columns={year : 'date'})
dataframe = dataframe.set_index('date')
return dataframe
dfA = create_datetime(dfA)
dfB = create_datetime(dfB)
dfC = create_datetime(dfC)
final = pd.concat([dfA,dfB,dfC],axis=1)
A C C
date
2014-01-01 15.8 15.8 15.8
2014-01-02 21.0 21.0 21.0
2014-01-03 22.3 22.3 22.3
2014-01-04 20.2 20.2 20.2
2014-01-05 20.0 20.0 20.0

TA贡献1818条经验 获得超11个赞
尝试:
df_result = ((df.set_index(['year','month','day'])
.join([df1.set_index(['year','month','day']),
df2.set_index(['year','month','day'])]))
.reset_index())
df_result['date'] = pd.to_datetime((df.year*10000+df.month*100+df.day).apply(str),format='%Y%m%d')
df_result.drop(['year','month','day'], axis=1, inplace=True)
df_result
A B C date
0 15.8 15.8 15.8 2014-01-01
1 21.0 21.0 21.0 2014-01-02
2 22.3 22.3 22.3 2014-01-03
3 20.2 20.2 20.2 2014-01-04
4 20.0 20.0 20.0 2014-01-05
添加回答
举报