在python中将列转换为行[重复]
Posted
技术标签:
【中文标题】在python中将列转换为行[重复]【英文标题】:converting columns to rows in paython [duplicate] 【发布时间】: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)
【问题讨论】:
【参考方案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')
【讨论】:
以上是关于在python中将列转换为行[重复]的主要内容,如果未能解决你的问题,请参考以下文章