私はいくつかのデータを取得しました:
# 3 Experiments 0,1 and 2.
# 2 Setups 'foo' and 'bar'
# 3 Measured parameters 'a', 'b' and 'c'
d = {0: {'foo': {'a': 12.68, 'b': 54.44, 'c': 83.98},
'bar': {'a': 11.73, 'b': 53.34, 'c': 82.93}},
2: {'foo': {'a': 11.12, 'b': 57.99, 'c': 81.05},
'bar': {'a': 10.05, 'b': 56.12, 'c': 80.01}},
1: {'foo': {'a': 13.41, 'b': 54.32, 'c': 82.74},
'bar': {'a': 12.77, 'b': 53.15, 'c': 82.01}}}
パンダにインポートしました
ds = (pd.DataFrame.from_dict(d, orient='index')
.stack().apply(pd.Series)
.rename_axis(['experiment', 'setup']))
これはうまく表示されます:
a b c
experiment setup
0 foo 12.68 54.44 83.98
bar 11.73 53.34 82.93
2 foo 11.12 57.99 81.05
bar 10.05 56.12 80.01
1 foo 13.41 54.32 82.74
bar 12.77 53.15 82.01
実験が間違った順序で行われており、セットアップもソートされていないことがわかります。したがって、次のようにインデックスを並べ替えて表示したいと思います。
a b c
experiment setup
0 bar 11.73 53.34 82.93
foo 12.68 54.44 83.98
1 bar 12.77 53.15 82.01
foo 13.41 54.32 82.74
2 bar 10.05 56.12 80.01
foo 11.12 57.99 81.05
sort
、sort_index
、sort_values
またはを使用して多くのことを試しましたsortlevel
が、機能していないようです。また、 を使用reset_index
してすべてをフラット化しようとしましたがsort
、を使用して再試行しましたが、機能しません。
必要に応じてデータフレームをソートまたは並べ替える方法は?
sort_index
期待どおりに機能しないのは非常に奇妙ですが、インデックスをリセットし、値をソートし、インデックスを元に戻すことで、期待どおりの出力を得ることができました。
ds = ds.reset_index()\
.sort_values(by=['experiment','setup'])\
.set_index(['experiment','setup'])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加