2017-11-09 1 views
0

を提示するが、私が見つけた例は、このケースをカバーしていませんでした:最良の方法は、私は、マルチインデックスパンダについて読ん階層データのpythonパンダ

私は私1..nの中測定値のセットを持っています。各測定値iは属性a、b、c、X、Y、Zから成ります.a、b、cはスカラ値を持ちますが、X、Y、Zは配列です。 (X、Y、Zは異なる測定値に対して異なる長さを有するが、1つの測定値i内では、配列X、Y、Zは同じ長さmを有する)。

質問:パンダのデータフレームでこれを表現する最良の方法はありますか?

私が見たマルチインデックスの例は、測定のための第1のレベルと、X、Y、Zのインデックスのための第2のレベルとを含む。しかし、属性a、b、cはどのような値を持つのですか? a、b、cの値を繰り返すべきか?または、各測定値iの最初の行だけがa、b、cの値を含み、他の2..m行にNaNが含まれますか?

+0

行間の配列のインデックス値には何か関係はありますか?つまり、例えばある行の 'X'配列の最初の要素は、他の行の' X'配列の最初の要素と匹敵していますか?そして、配列はどれくらいですか?データフレームはどのような種類の操作をサポートする必要がありますか? – fuglede

+0

X、Y、Zは点の座標のような関連属性であり、各測定値iは最大256個の点を有する。 a、b、cは、例えば、以下のような測定の他のパラメータである。 a =温度、b =電圧、c = number_of_points。 2つの測定値間のポイントは多少関連しますが、強くは関係ありません。 – embedded42

+0

私がすることになっているクエリは次のようなものです: 1)整合性チェック、各測定iのnumber_of_point cはX、Y、Z配列の実際の長さに等しい 2)例えばXがある値より大きいすべての測定を選択してください 3)プロパティを確認してください。 a = 1の場合、X <5 – embedded42

答えて

0

コメントの中で言及されているように、これの多くは、1日の終わりに答えることができる質問の種類によって異なります。配列が各行内で同じ長さを持つという事実を利用する潜在的に意味のある表現の1つの例は、$ i $番目の行$ m_i $回を繰り返す配列に沿って製品を取ることです。

In [12]: from itertools import chain 

In [13]: df = pd.DataFrame({'a': [5, 7, 1], 'b': [1, 3, 2], 'c': [10, 1, 1], 'X': [[10, 10], [10, 20, 30], [4, 5]], 'Y': [[20 
    ...: , 30], [1, 4, 5], [0, 1]], 'Z': [[0, 3], [0, 1, 2], [50, 60]]}) 

In [14]: df 
Out[14]: 
       X   Y   Z a b c 
0  [10, 10] [20, 30]  [0, 3] 5 1 10 
1 [10, 20, 30] [1, 4, 5] [0, 1, 2] 7 3 1 
2  [4, 5]  [0, 1] [50, 60] 1 2 1 

In [15]: pd.DataFrame({ 
    ...:  'a': np.repeat(df.a.values, df.X.apply(len)), 
    ...:  'b': np.repeat(df.b.values, df.X.apply(len)), 
    ...:  'c': np.repeat(df.c.values, df.X.apply(len)), 
    ...:  'X': list(chain.from_iterable(df.X)), 
    ...:  'Y': list(chain.from_iterable(df.Y)), 
    ...:  'Z': list(chain.from_iterable(df.Z))}) 
    ...: 
Out[15]: 
    X Y Z a b c 
0 10 20 0 5 1 10 
1 10 30 3 5 1 10 
2 10 1 0 7 3 1 
3 20 4 1 7 3 1 
4 30 5 2 7 3 1 
5 4 0 50 1 2 1 
6 5 1 60 1 2 1 

これはアレイが列間で一致を長という事実は、アレイ自体が同等の要素単位であることを意味することを想定しています。

関連する問題