我有一个像这样的pandas数据框:
weatherdate publishdate weathernode value
384 2018-01-30 2018-01-30 CYWG -11.67
385 2018-01-31 2018-01-30 CYWG -15.56
432 2018-01-30 2018-01-30 CYYZ -8.33
433 2018-01-31 2018-01-30 CYYZ -5.00
512 2018-01-31 2018-01-31 CYWG -17.22
560 2018-01-31 2018-01-31 CYYZ -6.67
两个日期列都是datetime64格式。我将df转换为如下所示的数据透视表:
dffcst = pd.pivot_table(df, index='weatherdate', columns=['weathernode','publishdate'], values='value')
得到如此的输出:
weathernode CYWG CYYZ
publishdate 2018-01-30 2018-01-31 2018-01-30 2018-01-31
weatherdate
2018-01-30 -11.67 NaN -8.33 NaN
2018-01-31 -15.56 -17.22 -5.00 -6.67
我想结合上面两行列名,得到一个像我在excel中构建的输出(注意下面的格式是最好的情况 - 删除年/月/日之间的破折号,不日期和机场代码之间的空格):
weatherdate CYWG20180130 CYWG20180131 CYYZ20180130 CYYZ20180131
1/30/2018 -11.67 NaN -8.33 NaN
1/31/2018 -15.56 -17.22 -5 -6.67
我试图像这样加入他们:
dffcst.columns = [''.join(col) for col in dffcst.columns]
但是我收到以下错误:
TypeError:序列项1:预期的str实例,找到时间戳
所以pandas无法将第一行列名中的日期连接到第二行列名中的字符串。
我尝试过以下代码:
dffcst.columns = [''.join(str(col)) for col in dffcst.columns]
它可以工作,但新的列标题对我来说是两个难以使用的,所以我需要一个替代解决方案,就像我在上面的Excel中构建的那样。这是一个笨重的列标题的示例:
(' CYWG',时间戳(' 2018-01-30 00:00:00'))
目标是将此表导出到csv,该csv将被拉入excel模型。我可以通过偏移匹配查找excel模型,这样我就可以在各种不同的预测日期查找各种气象站。很高兴听到任何人对这个想法的想法。
答案 0 :(得分:0)
将Timestamp对象转换为strftime
的字符串:
dffcst.columns = [c[0] + pd.datetime.strftime(c[1], '%y%m%d') for c in dffcst.columns]