いくつかの多次元データをパンダのデータフレームまたはパネルに保存して、たとえば次のように返すことができるようにします。
データの例は次のようになります。すべてのランナーがすべての年またはすべてのレースのデータを持っているわけではないことに注意してください。
誰かがパンダや他の方法でこれを行うための良い方法を提案できますか?
Name | Gender | Age
Runner A | Male | 35
Race A
Year | Time
2015 | 2:35:09
2014 | 2:47:34
2013 | 2:50:12
Race B
Year | Time
2013 | 1:32:07
Runner B | Male | 29
Race A
Year | Time
2015 | 3:05:56
Runner C | Female | 32
Race B
Year | Time
1998 | 1:29:43
スライサーでMultiindex
データを使用して選択できると思います:
import pandas as pd
df = pd.DataFrame({'Time': {('Runner A', 'Male', 35, 'Race A', 2014): '2:47:34', ('Runner C', 'Female', 32, 'Race B', 1998): '1:29:43', ('Runner B', 'Male', 29, 'Race A', 2015): '3:05:56', ('Runner A', 'Male', 35, 'Race A', 2013): '2:50:12', ('Runner A', 'Male', 35, 'Race B', 2013): '1:32:07', ('Runner A', 'Male', 35, 'Race A', 2015): '2:35:09'}})
print (df)
Time
Runner A Male 35 Race A 2013 2:50:12
2014 2:47:34
2015 2:35:09
Race B 2013 1:32:07
Runner B Male 29 Race A 2015 3:05:56
Runner C Female 32 Race B 1998 1:29:43
#index has to be fully lexsorted
df.sort_index(inplace=True)
print (df)
Time
Runner A Male 35 Race A 2013 2:50:12
2014 2:47:34
2015 2:35:09
Race B 2013 1:32:07
Runner B Male 29 Race A 2015 3:05:56
Runner C Female 32 Race B 1998 1:29:43
idx = pd.IndexSlice
print (df.loc[idx['Runner A',:,:,'Race A',:],:])
Time
Runner A Male 35 Race A 2013 2:50:12
2014 2:47:34
2015 2:35:09
print (df.loc[idx[:,:,:,'Race A',2015],:])
Time
Runner A Male 35 Race A 2015 2:35:09
Runner B Male 29 Race A 2015 3:05:56
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加