2017-05-12 4 views
1

私はPandas DataFrameを持っています。その顧客番号が設定回数以上発生した場合にのみDataFrameを返します。ここでPython Pandasは、値のカウントが設定された数値を上回るDataFrameを返す

は、データフレームのサンプルです:その顧客は、このコードを使用して、5回以上発生した場合

114 2017-04-26  1  7507  34  13 
115 2017-04-26  3  77314  41  14 
116 2017-04-27  7  4525  190  315 
117 2017-04-27  7  5525  67  94 
118 2017-04-27  1  6525  43  378 
119 2017-04-27  3  7415  38  27 
120 2017-04-27  2  7613  47  10 
121 2017-04-27  2  77314  9  3 
122 2017-04-28  1  227  17  4 
123 2017-04-28  8  4525  205  341 
124 2017-04-28  1  7415  31  20 
125 2017-04-28  2  77314  8  2 

そして、ここでは、次のとおりです。私はこれをしなかった場合

print(zip_data_df['Customers'].value_counts()>5) 

7415  True 
4525  True 
5525  True 
77314  True 
6525  True 
4111  True 
227  True 
206  False 
7507  False 
7613  False 
4108  False 
3046  False 
2605  False 
4139  False 
4119  False 

今私は予想しました:

print(zip_data_df[zip_data_df['Customers'].value_counts()>5]) 

5回以上発生した顧客のDataFrame全体が表示されますが、私はBooを取得しましたリーンエラー。私は今なぜエラーになるのかを理解しています.1つのDataFrameは、その顧客番号が5回以上出現するかどうかを教えてくれるだけで、もう1つは顧客番号が出現するたびに私を見せています。彼らは長さが一致しません。しかし、データフレームは、その顧客が5回以上出現したレコードのみを返すように、どうすれば入手できますか?

私は見落としているいくつかの簡単な答えがあると確信していますが、私はあなたが私を得ることができる任意のヘルプに感謝します。

zip_data_df['Customers'].value_counts()[zip_data_df['Customers'].value_counts()>5] 
+0

私の思考は私が阿部信じているものと同様のcustcountを行う列を追加する必要があります提案したので、私はこれを試しました: zip_data_df ['cust_counts'] = zip_data_df ['Customers'] しかし、それはちょうど私にすべてのcust_countsの "NaN"を与えます。 – Emac

答えて

2

ので、ここでの問題は、インデックスである:私はあなたが探しているものと考えてい

+0

この解決策からこのエラーが発生しました: ValueError:DataFrameを Emac

+1

のインスタンスとマージできません。マージで@Emac ok、最初の引数を置き換えてください。** cust_counts ** ** cust_counts.to_frame()** – abe

+0

ビンゴ!それはトリックでした!ありがとう! – Emac

0

value_countsは()zip_data_dfは何か他のものの上にインデックスを作成しているように見える一方でシリーズは「顧客」にインデックス付けを返します。あなたはそのようzip_data_dfから条件付きで選択することができ、そこから

cust_counts = zip_data_df['Customers'].value_counts().rename('cust_counts') 

zip_data_df = zip_data_df.merge(cust_counts.to_frame(), 
           left_on='Customers', 
           right_index=True) 

:あなたのような何かを行うことができます

zip_data_df[zip_data_df.cust_counts > 5] 
+0

問題は、5回以上発生した顧客のみを返しますが、その顧客に5回以上出現した場合は、行全体(すべてのフィールド)を返したいとします。 – Emac

関連する問題