使用列标题和行值创建新列

时间:2018-10-18 14:28:39

标签: python pandas

我有按日期索引的数据,其中时间作为每一行的单独列。比较起来并不理想。当时间列为float64时, RecordDate 是一个对象。

我最初的想法是将其转换为日期时间并进行合并,但是,我知道由于时间是列标题,因此无法正常工作。

这是我的数据集的一个示例:

  RecordDate    T0000   T0030   T0100   T0130   T0200   T0230   T0300
    15/04/2015  0        0       0       0       0       0       0
    16/04/2015  0        0       0       0       0       0       0
    17/04/2015  0        0       0       0       0       0       0
    18/04/2015  0        0       0       0       0       0       0

这是我理想结果的一个例子:

RecordDate           Value
15/04/2015 00:00       0
15/04/2015 00:30       0
15/04/2015 01:00       0

任何想法都值得赞赏!

1 个答案:

答案 0 :(得分:2)

您可以使用pd.DataFrame.melt方法。 例如以下代码

df = pd.DataFrame({
    "RecordDate": ["15/04/2015", "16/04/2015"],
    "T0000": [1, 2],
    "T0030": [3, 4]
})
df.melt(id_vars=["RecordDate"], var_name="RecordHour")

提供输出

   RecordDate RecordHour  value
0  15/04/2015      T0000      1
1  16/04/2015      T0000      2
2  15/04/2015      T0030      3
3  16/04/2015      T0030      4

然后将RecordDateRecordHour列合并为一个datetime列。