问题描述
在Python中如何将以下表结构转换为行
ID Manager1 Manager2 Manager3
1 S394[1] G490[2] 3004[3]
2 3905[1] 4003[2] 5003[3]
预期产量
ID Manager
1 S394[1]
1 G490[2]
1 3004[3]
2 3905[1]
2 4003[2]
2 5003[3]
我尝试使用transpose()
和pivot()
。这两个选项都无效
df.pivot(index='SOEID',columns=['Manager1','Manager2','Manager3'])
我也尝试了pd.melt()我收到一条错误消息,指出索引只有1级而不是2级。
df.melt(id_vars='SOEID',var_name=['Manager1','Manager3'])
解决方法
您也可以使用lreshape
:
pd.lreshape(df,{'Manager': ['Manager1','Manager2','Manager3']}).sort_values('ID')
输出:
ID Manager
0 1 S394[1]
2 1 G490[2]
4 1 3004[3]
1 2 3905[1]
3 2 4003[2]
5 2 5003[3]
注意:lreshape
目前尚未记录,有可能it might be removed。
问题是您需要select Details
from [Items]
where CONTAINS((Details,Assignee),'"doxy*" AND "vive*"')
来获取DataFrame.melt
中的列名称列表吗?
value_vars
带有DataFrame.stack
的替代解决方案:
df1 = (df.melt(id_vars='ID',value_vars=['Manager1','Manager3'],value_name='Manager',var_name='tmp').drop('tmp',axis=1).sort_values('ID'))
print (df1)
ID Manager
0 1 S394[1]
2 1 G490[2]
4 1 3004[3]
1 2 3905[1]
3 2 4003[2]
5 2 5003[3]