2017-08-10 75 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