2017-12-23 15 views
1

ドキュメントから:"col_level"はメルト関数で何をしますか?

pd.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None) 

col_levelは何をしますか?

col_levelの値が異なる例は素晴らしいでしょう。

df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'}, 
        'B': {0: 1, 1: 3, 2: 5}, 
        'C': {0: 2, 1: 4, 2: 6}}) 
df.columns = [list('ABC'), list('DEF'), list('GHI')] 

ありがとう:

私の現在のデータフレームは、以下によって作成されます。

答えて

2

あなたはmeltをチェックすることができます。

col_level:int型または文字列、オプションの

列がマルチインデックスされている場合は、溶融するために、このレベルを使用します。

と例:

df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'}, 
        'B': {0: 1, 1: 3, 2: 5}, 
        'C': {0: 2, 1: 4, 2: 6}}) 
#use Multiindex.from_arrays for set levels names 
df.columns = pd.MultiIndex.from_arrays([list('ABC'), list('DEF'), list('GHI')], 
             names=list('abc')) 
print (df) 
a A B C 
b D E F 
c G H I 
0 a 1 2 
1 b 3 4 
2 c 5 6 

#melt by first level of MultiIndex 
print (df.melt(col_level=0)) 
    a value 
0 A  a 
1 A  b 
2 A  c 
3 B  1 
4 B  3 
5 B  5 
6 C  2 
7 C  4 
8 C  6 

#melt by level a of MultiIndex 
print (df.melt(col_level='a')) 
    a value 
0 A  a 
1 A  b 
2 A  c 
3 B  1 
4 B  3 
5 B  5 
6 C  2 
7 C  4 
8 C  6 

#melt by level c of MultiIndex 
print (df.melt(col_level='c')) 
    c value 
0 G  a 
1 G  b 
2 G  c 
3 H  1 
4 H  3 
5 H  5 
6 I  2 
7 I  4 
8 I  6 
+0

は、これを使用してみました、それが動作します: pd.melt(DF、col_level = 'B'、id_vars = ['D']) しかし、なぜこれは動作しません: pd.melt(df、col_lev el = 'b'、id_vars = ['D']、value_vars = ['E']) ありがとう! – Nick123

+1

私はそれをテストし、それほど簡単な答えではありません。しかし 'col_level'と共に' value_vars'を一緒に使うことはできません。 Btw、実質的にパラメータ 'col_level'は非常にまれですので、いくつかのバグがある可能性があります。 – jezrael

関連する問題