2017-08-10 3 views
1

インデックスがIDFrequency(Hz)、カラム名がAnglesのマルチインデックスPandas DataFrame dataがあります。各IDデータセットの場合は、Frequency指数は、私がこのような何かを与え、2πでFrequency指数の倍数の各値の追加Rad/sインデックス列を追加したい4.Pandas DataFrameのインデックスの追加/変更

Angles       1   2   3   4 \ 
ID    Frequency            
11111   4.0    2.1  5.4  3.1  6.4 
       8.0    1.1  7.9  4.5  6.3 
       12.0    5.2  5.1  9.6  11.2 
       16.0    6.7  6.1  2.9  7.3 
       20.0    1.1  6.1  4.7  6.9 
...        ...  ...  ...  ... 
11120   992.0   9.2  5.4  2.7  9.2 
       996.0   8.1  8.9  3.1  4.5 
       1000.0   2.1  1.8  5.5  8.4 

の段階で4〜1000の範囲:

Angles         1   2   3   4 \ 
ID   Frequency Rad/s            
11111  4.0   25.1  2.1  5.4  3.1  6.4 
      8.0   50.3  1.1  7.9  4.5  6.3 
      12.0   75.4  5.2  5.1  9.6  11.2 
      16.0   100.5  6.7  6.1  2.9  7.3 
      20.0   125.7  1.1  6.1  4.7  6.9 
...         ...  ...  ...  ... 
11120  992.0  6232.9  9.2  5.4  2.7  9.2 
      996.0  6258.1  8.1  8.9  3.1  4.5 
      1000.0  6283.2  2.1  1.8  5.5  8.4 

私は通常の列にFrequencyインデックスを変更した後、乗算を適用するに見てきたが、これを行うためのより良い方法がある場合、私は不思議でしたか?

答えて

1

あなたはそれが最初get_level_valuesrenameおよび複数を使用して、パラメータappend=Trueset_indexを使用することができます。

new = df.index.get_level_values('Frequency').rename('Rad/s') * 2 * np.pi 
df = df.set_index(new, append=True) 
print (df) 
           1 2 3  4 
ID Frequency Rad/s       
11111 4.0  25.132741 2.1 5.4 3.1 6.4 
     8.0  50.265482 1.1 7.9 4.5 6.3 
     12.0  75.398224 5.2 5.1 9.6 11.2 
     16.0  100.530965 6.7 6.1 2.9 7.3 
     20.0  125.663706 1.1 6.1 4.7 6.9 
11120 992.0  6232.919825 9.2 5.4 2.7 9.2 
     996.0  6258.052566 8.1 8.9 3.1 4.5 
     1000.0 6283.185307 2.1 1.8 5.5 8.4 
関連する問題