7

同じ行/列ラベルを持つ多くの DataFrames を持つ Pandas Panel があります。いくつかの列に基づいて特定の基準を満たす DataFrame を使用して新しいパネルを作成したいと考えています。

これは、データフレームと行で簡単です: df、zHe_compare があるとします。次の方法で適切な行を取得できます。

zHe_compare[(zHe_compare['zHe_calc'] > 100) & (zHe_compare['zHe_med'] > 100) | ((zHe_obs_lo_2s <=zHe_compare['zHe_calc']) & (zHe_compare['zHe_calc'] <= zHe_obs_hi_2s))]

しかし、どうすればよいですか(疑似コード、単純化されたブール値):

good_results_panel = results_panel[ all_dataframes[ sum ('zHe_calc' < 'zHe_obs') > min_num ] ]

内側のブール部分は知っていますが、パネル内の各データフレームにこれを指定するにはどうすればよいですか? panel.minor_xs各 df から複数の列が必要なため、スライス手法を使用しても成功していません。

ありがとう!

4

1 に答える 1

1

そのドキュメントに記載されているように、Panelは現在開発が少し遅れているため、作業するときに頼るようになった甘い構文DataFrameはまだありません。

Panel.selectその間、次の方法を使用することをお勧めします。

def is_good_result(item_label):
    # whatever condition over the selected item
    df = results_panel[item_label]
    return df['col1'].sum() > 5

good_results = results.select(is_good_result)

このis_good_result関数はブール値を返します。その引数は、アイテムのコンテンツではなく、アイテムのラベルに適用されるDataFrameため、インスタンスではないことに注意してください。Panel.selectDataFrame

もちろん、全体を簡潔にしたい場合は、その基準関数全体を 1 つのステートメントでラムダに詰め込むことができます。

good_results = results.select(
                 lambda item_label: results[item_label]['col1'].sum() > 5
                 )
于 2013-03-24T10:40:37.800 に答える