2017-09-28 1 views
0

を繰り返す他の変数は、私は、次のデータがあるとします。形状変更がスタックにいくつかの変数で、longに広いデータフレームをパンダ、

>>> import numpy as np 
>>> import pandas as pd 

>>> data = np.random.randint(low=0, high=9, size=(10, 6)) 
>>> cols = ['wage1985', 'wage1986', 'hours1985', 'hours1986', 'race', 'edu'] 
>>> df = pd.DataFrame(data, columns=cols) 
>>> df 
    wage1985 wage1986 hours1985 hours1986 race edu 
0   8   2   5   0  3 1 
1   7   1   5   8  4 1 
2   7   5   3   7  3 7 
3   8   3   8   3  1 0 
4   2   7   1   6  7 2 
5   8   1   3   8  1 6 
6   4   7   6   6  1 7 
7   0   6   6   2  6 8 
8   8   7   4   2  0 7 
9   2   2   7   2  3 6 

は今、私は長い間に広いから、それを再構築したいのですが、いくつかの変数があります(edu、race)を反復すべき値で置き換えます。望ましい出力は次のようなものになります(最初の観測結果のみを表示)。

>>> df_reshaped 
    year wage hours race edu 
id       
0 1985  8  5  3 1 
    1986  2  0  3 1 
    ...  .  .  . . 
    ...  .  .  . . 
+0

可能重複[単一の列にデータフレーム内の複数の列をフラット化(https://stackoverflow.com/questions/46435329/flatten-multiple-columns-in-a-dataframe-to -a-single-column) – Wen

答えて

0
>>> id['id'] = df.index 
>>> pd.wide_to_long(df, ["wage", "hours"], i="id", j="year") 
     edu race wage hours 
id year       
0 1985 1  3  8  5 
1 1985 1  4  7  5 
2 1985 7  3  7  3 
3 1985 0  1  8  8 
4 1985 2  7  2  1 
5 1985 6  1  8  3 
6 1985 7  1  4  6 
7 1985 8  6  0  6 
8 1985 7  0  8  4 
9 1985 6  3  2  7 
0 1986 1  3  2  0 
1 1986 1  4  1  8 
2 1986 7  3  5  7 
3 1986 0  1  3  3 
4 1986 2  7  7  6 
5 1986 6  1  1  8 
6 1986 7  1  7  6 
7 1986 8  6  6  2 
8 1986 7  0  7  2 
9 1986 6  3  2  2 
+0

あなたはあなたの質問に完全に答えます。 – Wen

関連する問題