簡體   English   中英

如何更改 pandas dataframe 結構?

[英]How to change pandas dataframe structure?

我有一個 dataframe 列:ch_name 和值(單獨的列),索引是日期時間。 我想做這樣的事情:ch_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 個通道,但 pandas 只顯示其中 2 個,並且每天的值都是完整的

使用pivot

df = pd.DataFrame({"time":[1,2,3,4],
                   "ch_name":["a","a","b","b"],
                   "value":[0.06,0.06,594.0,594.0]})
df.set_index("time",inplace=True)

print (df)
#     ch_name   value
time                
1          a    0.06
2          a    0.06
3          b  594.00
4          b  594.00
ch_name     a      b

print (pd.pivot(df,columns="ch_name",values="value"))
#
time                
1        0.06    NaN
2        0.06    NaN
3         NaN  594.0
4         NaN  594.0

您可以使用如下所示的 pivot_table

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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM