【问题标题】:converting columns to rows in paython [duplicate]在python中将列转换为行[重复]
【发布时间】:2021-10-23 03:34:08
【问题描述】:

我有一个这样的数据框,

df1=
        time   asset_id sensor_01   sensor_02
0   2019-08-01  120         23        54
1   2019-08-02  125         45        38
2   2019-08-03  120         25        49

由于传感器的数量是可变的,我决定将它们写成行,例如,

df2=
      time  asset_id    sensor_ID   sensor_value
0   2019-08-01  120     sensor_01      23
1   2019-08-02  125     sensor_01      45
2   2019-08-03  120     sensor_01      25
3   2019-08-01  120     sensor_02      54
4   2019-08-02  125     sensor_02      38
5   2019-08-03  120     sensor_02      49

我想知道是否有任何方便的方法可以将 df1 转换为 df2?

附录: df1 代码为方便起见,

import pandas as pd
dictionary = {'time': ['2019-08-01', '2019-08-02', '2019-08-03'],
              'asset_id': ['120', '125', '120'],
              'sensor_01': [23, 45, 25],
              'sensor_02': [54, 38, 49]
    
}
df1 = pd.DataFrame(dictionary)

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用pandas.melt:

    pd.melt(df1,
            id_vars=['time', 'asset_id'], # variables to keep as columns
            var_name='sensor_ID',         # column name for the variable
            value_name='sensor_value'     # column name for the values
           )
    

    输出:

             time asset_id  sensor_ID  sensor_value
    0  2019-08-01      120  sensor_01            23
    1  2019-08-02      125  sensor_01            45
    2  2019-08-03      120  sensor_01            25
    3  2019-08-01      120  sensor_02            54
    4  2019-08-02      125  sensor_02            38
    5  2019-08-03      120  sensor_02            49
    

    【讨论】:

      【解决方案2】:
      pd.melt(df, id_vars=['time', 'asset_id'], value_vars=['sensor_01', 'sensor_02'], var_name='sensor_ID', value_name='sensor_value')
      

      【讨论】:

        猜你喜欢
        • 2019-08-09
        • 1970-01-01
        • 2023-03-26
        • 2013-06-22
        • 2011-03-22
        • 2014-01-27
        • 1970-01-01
        • 2015-08-06
        相关资源
        最近更新 更多