2016-08-08 2 views
0

何千もの質問がありましたが、どこにも見つからないような非常に愚かな質問をしているような気がします。私は間違った用語を使用している可能性があります。パンダのデータフレームの一部のみを使用してください

とにかく、私はパンダフレームdfを持っています。そして、私はこのデータフレームの一部を使いたいと思います。具体的には、私はループでそれを使用したい:

unique_values = df['my_column'].tolist() 
unique_values = list(set(unique_values)) 

for value in unique_values: 
    tempDf = df[df['my_column] == value] 
    # Do stuff with tempDf 

しかし、これは動作していないようです。データフレームを列の値で 'フィルタリング'する別の方法はありますか?代わりに

+3

非効率的なようですが、あなたが

for value in unique_values: tempDf = df[df['my_column] == value] tempDf = tempDf .query('(value == True)') # Do stuff with tempDf 

を行うことができ、クエリ文を使用することができます基本的な質問をする。何が間違っているか教えてください。 –

+0

どのように動作していませんか? –

+0

@BramVanroy私は投票していませんでした。しかし私には傾きがありました。その理由は、この質問があいまいであるためです。私たちは一般的に、MCVE標準(http://stackoverflow.com/help/mcve)に従うように質問します。私たちが比較できる直接的な解決策がなく、他の人たちが何を考えているのかを知っているという事実と結びついて、あなたがどのように尋ねたのかのトーンは、下位投票につながることがあります。答えるのがまっすぐに現れたら、この質問に答えることを検討するのをやめます。この場合、回答者があなたのための例を思いつくためにすべての作業を行うように要求しています。 – piRSquared

答えて

3

使用df.groupby

for value, tempDf in df.groupby('my_column'): 
    # Do stuff with tempDf 

あなたのコードは'my_columnの周りに不足している単一引用符を固定した後、作業を​​行いますが、df.groupbyを使用するよりも遅くなります。

ループ内でdf['my_column'] == valueを評価すると、Pandasはループの繰り返しごとに​​の比較を実行します。 df.groupbyは、DataFrameを1回通過するグループにDataFrameを分割します。

+1

申し訳ありませんが、私はあなたの答えでエラーを述べたことに気付かず、それは実際のコードではなく、質問の誤植であると仮定しました。しかし、その仮定は真実ではないかもしれないので、私はそれをロールバックした。 – ayhan

+0

いずれにしても大丈夫です。しかし、それはOPのコードに見られる唯一のエラーです。 – unutbu

0
for value in unique_values: 
    tempDf = df.where(df['column_name'] == value) 
    # Do stuff with tempDf 

またあなたが

for value in unique_values: 
    tempDf = df.query('(column_name == value)') 
    # Do stuff with tempDf 

または最後の1がダウン投票いくつかのいずれかので、エリートくそー

+0

コンソールは、この 'ValueError:whereは条件のためにオブジェクトのようなndarrayを必要とします'を返します。 –

+0

@BramVanroy私の回答を更新しました – Kalimantan

関連する問題