【发布时间】:2021-01-26 15:57:46
【问题描述】:
目标是还原下表
Activity General m1 t1 m2 t2 m3 t3
0 P1 AA A1 TA1 A2 TA2 A3 TA3
1 P2 BB B1 TB1 B2 TB2 B3 TB3
变成如下格式
Activity General M Task
0 P1 AA A1 TA1
1 P1 AA A2 TA2
2 P1 AA A3 TA3
3 P2 BB B1 TB1
4 P2 BB B2 TB2
5 P2 BB B3 TB3
根据一些阅读,melt 模块可用于实现预期目标。
import pandas as pd
from pandas import DataFrame
list_me = [['P1','AA','A1','TA1','A2','TA2','A3','TA3'],
['P2', 'BB', 'B1', 'TB1', 'B2', 'TB2', 'B3', 'TB3']]
df = DataFrame (list_me)
df.columns = ['Activity','General','m1','t1','m2','t2','m3','t3']
melted_form=pd.melt(df, id_vars=['Activity','General'],var_name='m1',value_name='new_col')
但是,在网上找到的大多数示例仅用于处理单列。我正在考虑使用 for 循环来循环 m1 m2 和 m3 并同时合并结果。这是因为,实际上,m_i 和 t_i 这对在数百的范围内(其中 i 是索引)
但是,我想知道还有比循环更有效的方法。
附言我曾尝试过OP 中的建议,但是它没有给出预期的输出
【问题讨论】:
标签: python pandas pivot unpivot melt