如何更改数据帧结构?

2024-06-02 05:17:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dataframe,它有列:chu name和value(单独的列),索引是datetime。我想这样做:chu name必须是列名,值必须在数据框中

现在是什么样子:

                                                               ch_name    value
time                                                                           
2019-01-22 00:00:00  Housekeeping.Cardframe_+X_heater-0_Switch_Curr...    0.006
2019-01-22 00:01:00  Housekeeping.Cardframe_+X_heater-0_Switch_Curr...    0.006
2019-01-22 00:02:00  Housekeeping.Cardframe_+X_heater-0_Switch_Curr...    0.006
2019-01-22 00:03:00  Housekeeping.Cardframe_+X_heater-0_Switch_Curr...    0.006
2019-01-22 00:04:00  Housekeeping.Cardframe_+X_heater-0_Switch_Curr...    0.006
...                                                                ...      ...
2019-01-22 23:56:00                             LIN.Lifetime_Cold_Boot  594.000
2019-01-22 23:57:00                             LIN.Lifetime_Cold_Boot  594.000
2019-01-22 23:58:00                             LIN.Lifetime_Cold_Boot  594.000
2019-01-22 23:59:00                             LIN.Lifetime_Cold_Boot  594.000
2019-01-22 23:59:00                             LIN.Lifetime_Cold_Boot  594.000

[239040 rows x 2 columns]

我想看起来像:

                     Housekeeping.Cardframe_+X_heater-0_Switch_Curr    LIN.Lifetime_Cold_Boot    ch_name 3        .... ch_name 166
time                                                                           
2019-01-22 00:00:00      0.006                                                 ....                 values
2019-01-22 00:01:00      0.006                                                 ....
2019-01-22 00:02:00      0.006                                                 ....
2019-01-22 00:03:00      0.006                                                 ....
2019-01-22 00:04:00      0.006                                                 ....
...                                                                
2019-01-22 23:56:00      ....                                                 594.000
2019-01-22 23:57:00      ....                                                 594.000
2019-01-22 23:58:00      ....                                                 594.000
2019-01-22 23:59:00      ....                                                 594.000
2019-01-22 23:59:00 (values have to be saved)                                 594.000

[239040 rows x 166 columns]

注意:有166个频道,但是熊猫只给我看其中的2个,每天的数值都是满的


Tags: nametimevaluechheaterrowsbootlifetime
1条回答
网友
1楼 · 发布于 2024-06-02 05:17:27

你可以像下面这样使用透视表

import pandas as pd
from pandas import Timestamp

df = pd.DataFrame([[Timestamp('2019-01-22 00:00:00'), 'Housekeeping.Cardframe_+X_heater-0_Switch_Curr...', 0.006], [Timestamp('2019-01-22 00:01:00'), 'Housekeeping.Cardframe_+X_heater-0_Switch_Curr...', 0.006], [Timestamp('2019-01-22 00:02:00'), 'Housekeeping.Cardframe_+X_heater-0_Switch_Curr...', 0.006], [Timestamp('2019-01-22 00:03:00'), 'Housekeeping.Cardframe_+X_heater-0_Switch_Curr...', 0.006], [Timestamp('2019-01-22 00:04:00'), 'Housekeeping.Cardframe_+X_heater-0_Switch_Curr...', 0.006], [Timestamp('2019-01-22 23:56:00'), 'LIN.Lifetime_Cold_Boot', 594.0], [Timestamp('2019-01-22 23:57:00'), 'LIN.Lifetime_Cold_Boot', 594.0], [Timestamp('2019-01-22 23:58:00'), 'LIN.Lifetime_Cold_Boot', 594.0], [Timestamp('2019-01-22 23:59:00'), 'LIN.Lifetime_Cold_Boot', 594.0], [Timestamp('2019-01-22 23:59:00'), 'LIN.Lifetime_Cold_Boot', 594.0]], columns=('time', 'ch_name', 'value'))
df.set_index("time", inplace=True)

df.pivot_table(values='value', index='time', columns='ch_name')

相关问题 更多 >