2016-06-29 5 views
0

私はパンダのデータフレームを持っており、特定の行の非ゼロ要素の列のラベルを調べる必要があります。データフレーム内のインデックスと列の名前が同じ場合、ラベルを選択する方法は?

ですから、例えば:コラムaについては

columns = ['a', 'b', 'c'] 
df = pd.DataFrame([[1, 0, 1], [0, 1, 0], [3, 5, 2]], index=columns, columns=columns) 

、私は['a', 'c']が返されることがしたいです。

+0

@Merlinはい、それはインデックスが代わりに – AlanH

+0

ですコードレビューを通過するのに苦労するでしょう。 – AlanH

+0

あなたのデータ構造ラベルであるn×nの行列、@Merlin意図的 – Merlin

答えて

0

これはお好みのものですか?

列をループし
df.index[(df != 0)['a']] 
# Index([u'a', u'c'], dtype='object') 

df.index[(df != 0)['b']] 
# Index([u'b', u'c'], dtype='object') 

df.index[(df != 0)['c']] 
# Index([u'a', u'c'], dtype='object') 

と辞書を構築、私たちが行うことができます。

map(lambda col: {col: df.index[(df != 0)[col]].values}, df.columns) 
# [{'a': array(['a', 'c'], dtype=object)}, 
# {'b': array(['b', 'c'], dtype=object)}, 
# {'c': array(['a', 'c'], dtype=object)}] 
+0

しかし、それが返すものを反復することは可能ですか? iterableオブジェクトである必要があります。 – AlanH

+0

ただ答えを更新しました。 – Psidom

+0

申し訳ありませんが、私は辞書のようなオブジェクトを意味しませんでした。私は、最終的にデータフレーム内のそれらの列を表示できるようにするために、それらの列の配列を出力として必要としていることを意味しました。 'df.loc [thoseColumns、:] 'のようなもの – AlanH

関連する問題