如何使用 VBA 或 Python 将行转换为列?

How can I convert rows to column using VBA or Python?

我需要转换顶部的 table,它包含 1 个单次航班的行。 我不知道从哪里开始创建 VBA 或 Python 脚本来转置它以获得底部图表的格式,有什么想法吗? 我对编码和数据操作仍然很陌生,感谢您的帮助。

您可以使用 pandas pivot_table 来完成上述工作。

这是一个例子:

from pandas import DataFrame, read_excel

df = read_excel(<your_file.xlsx>)
altered_df=df.pivot_table(values=['Timestamp'],columns=['Type'], index=[<rest_of_your_columns_that_you_want_to_retain>])

DataFrame(altered_df.to_records())

感谢所有花时间阅读和回复我的问题的人。 我设法使用以下代码找到了 VBA 的方法。在 运行 代码之前必须进行一些操作,例如调整 headers 等

Dim i As Integer 'Import row
Dim k As Integer 'Pivot row
Dim m As Integer 'Pivot column
Dim Timestamp As Date

i = 2
k = 1

Do Until Sheet1.Cells(i, 3) = ""
If Sheet1.Cells(i, 4) <> "" Then
    If Sheet1.Cells(i, 3) <> Sheet1.Cells(i - 1, 3) Then
        k = k + 1
        Sheet2.Cells(k, 2) = Sheet1.Cells(i, 1)
        Sheet2.Cells(k, 3) = Sheet1.Cells(i, 4)
        Sheet2.Cells(k, 4) = "LGW"
        Sheet2.Cells(k, 5) = Sheet1.Cells(i, 6)
        Sheet2.Cells(k, 6) = Sheet1.Cells(i, 7)
    End If
    m = Application.WorksheetFunction.Match(Sheet1.Cells(i, 8), Sheet2.Rows(1), 0)
    If Sheet2.Cells(k, 1) = "" Then
        Sheet2.Cells(k, 1) = DateSerial(Left(Sheet1.Cells(i, 9), 4), Mid(Sheet1.Cells(i, 9), 6, 2), Mid(Sheet1.Cells(i, 9), 9, 2))
    End If
    Sheet2.Cells(k, m) = DateSerial(Left(Sheet1.Cells(i, 9), 4), Mid(Sheet1.Cells(i, 9), 6, 2), Mid(Sheet1.Cells(i, 9), 9, 2)) + (Mid(Sheet1.Cells(i, 9), 12, 2) / 24) + (Mid(Sheet1.Cells(i, 9), 15, 2) / 1440) + (Mid(Sheet1.Cells(i, 9), 18, 2) / 86400)
End If
i = i + 1
Loop

End Sub