2017-08-10 79 views
1

我有一个多索引熊猫数据帧data其索引IDFrequency(Hz),和列名称Angles。对于每个ID数据组,Frequency指数范围为4至1000的4熊猫数据帧的添加/修改索引

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 

步骤我要添加额外的Rad/s索引列,其乘以2π在Frequency索引的每个值,给予像这样:

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和多个它,然后再使用set_index与参数append=True

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