melt
目录
pd.melt
用法
直观的看就是将宽数据转化为长数据。转化为variable-value这样的形式。
=None, value_vars=None, var_name=None, value_name='value', col_level=None) pandas.melt(frame, id_vars
参数解释:
- frame:要处理的数据集。
- id_vars:不需要被转换的列名。
- value_vars:需要转换的列名,如果剩下的列全部都要转换,就不用写了。
- var_name和value_name是自定义设置对应的列名。
- col_level :如果列是MultiIndex,则使用此级别。 ## 实例
import pandas as pd
= pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},
df 'B': {0: 1, 1: 3, 2: 5},
'C': {0: 2, 1: 4, 2: 6}
})
df'''
A B C
0 a 1 2
1 b 3 4
2 c 5 6
'''
=['A'], value_vars=['B'])
pd.melt(df, id_vars'''
A variable value
0 a B 1
1 b B 3
2 c B 5
'''
=['A'], value_vars=['B', 'C'])
pd.melt(df, id_vars'''
A variable value
0 a B 1
1 b B 3
2 c B 5
3 a C 2
4 b C 4
5 c C 6
'''
=['A'], value_vars=['B'],
pd.melt(df, id_vars='myVarName', value_name='myValueName')
var_name'''
A myVarName myValueName
0 a B 1
1 b B 3
2 c B 5
'''
=['A'], value_vars=['B', 'C'],
pd.melt(df, id_vars=False)
ignore_index'''
A variable value
0 a B 1
1 b B 3
2 c B 5
0 a C 2
1 b C 4
2 c C 6
'''
# 多重索引
= [list('ABC'), list('DEF')]
df.columns
df'''
A B C
D E F
0 a 1 2
1 b 3 4
2 c 5 6
'''
# 选择最外层索引
=0, id_vars=['A'], value_vars=['B'])
pd.melt(df, col_level'''
A variable value
0 a B 1
1 b B 3
2 c B 5
'''
# 选择内层索引
=1, id_vars=['D'], value_vars=['E'])
pd.melt(df, col_level
# 选择复合索引
=[('A', 'D')], value_vars=[('B', 'E')])
pd.melt(df, id_vars'''
(A, D) variable_0 variable_1 value
0 a B E 1
1 b B E 3
2 c B E 5
'''