Basically you want to unpivot your table, but you have 2 header rows. A litte workaround will help:
- In PowerQuery transpose the table (no headers)
- Add a new column by concatenating the 1st and 2nd column using a "-"
- Transpose back
- Delete the first 2 rows
- Sort descending and promote the new "concatenated" row as header
- Unpivot all columns but the first (Date)
- Split the concatenated column by delimiter "-"

Here's the according M-code:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(
Source,
{
{"Column1", type any},
{"Column2", type any},
{"Column3", type any},
{"Column4", type any},
{"Column5", type any},
{"Column6", type any},
{"Column7", type any}
}),
#"Transposed Table" = Table.Transpose(
#"Changed Type"),
#"Added Custom" = Table.AddColumn(
#"Transposed Table", "Custom", each [Column1] & "-" & [Column2]),
#"Transposed Table1" = Table.Transpose(
#"Added Custom"),
#"Removed Top Rows" = Table.Skip(
#"Transposed Table1",2),
#"Sorted Rows" = Table.Sort(
#"Removed Top Rows",{{"Column1", Order.Descending}}),
#"Promoted Headers" = Table.PromoteHeaders(
#"Sorted Rows", [PromoteAllScalars=true]),
#"Renamed Columns" = Table.RenameColumns(
#"Promoted Headers",{{"City-Time of Day / Date", "Date"}}),
#"Changed Type1" = Table.TransformColumnTypes(
#"Renamed Columns",
{
{"Date", type date},
{"LA-Day", Int64.Type},
{"LA-Night", Int64.Type},
{"New York-Day", Int64.Type},
{"New York-Night", Int64.Type},
{"Aukland-Day", Int64.Type},
{"Aukland-Night", Int64.Type}
}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(
#"Changed Type1", {"Date"}, "Attribute", "Temperature"),
#"Split Column by Delimiter" = Table.SplitColumn(
#"Unpivoted Other Columns",
"Attribute",
Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv), {"City", "Time of Day"}),
#"Changed Type2" = Table.TransformColumnTypes(
#"Split Column by Delimiter",
{
{"City", type text},
{"Time of Day", type text}
})
in
#"Changed Type2"