2017-03-08 8 views
2

私は家と呼ばれるパンダのデータフレームを持っています。 1つの列はhouseIDであり、私は1000の異なる家の情報を取得したい。同じhouseIDを持つ行が1行以上あります(行の数が多かれ少なかれ)。そのために私は1000の最初の行を取得することはできません、私はこのような何かが必要です。列データフレームの数を制限する方法を選択できますか? PYTHON

SELECT * FROM houses WHERE COUNT(DISTINCT houseID) <= 1000 

削減例(3異なるhouseIDと、元のデータフレームを、私はこの減少した例では2つの異なるhouseIDをしたい):

from collections import OrderedDict 
import pandas as pd 
housesDict = OrderedDict([ ('houseID', ['1', '3', '1','2','2','1','3','1','1']), 
       ('Cost', [150, 200, 50,100,75,18,10,23,19])]) 
houses = pd.DataFrame.from_dict(housesDict) 
print(houses) 

私は2に家屋の異なる数を制限したい場合は、私の予想される出力は次のようになります。

housesDict = OrderedDict([ ('houseID', ['1', '3', '1','1','3','1','1']), 
        ('Cost', [150, 200, 50,18,10,23,19])]) 
houses = pd.DataFrame.from_dict(sales) 
print(houses) 

私はそれをどのように行うことができますか?

EDIT: 私は解決策を持っている、助けてくれてありがとう:あなたは異なる値にしたい場合は、数を制限したい場合は

a = list(df.drop_duplicates(subset=["houseID"]).iloc[:2]['houseID']) 
df[df['houseID'].isin(a)] 
+0

あなたの希望する結果は、問題の説明と一致しません。たとえば、2つの別個の売上が3と同じ場合に2が除外されるのはなぜですか?フィルタ(lambda x:len(x)<= 2) '? – EdChum

+0

@EdChum私は1000のdifferents houseIDのすべての行を必要とします。合計で、私のテーブルには1000個のhouseIDが必要です。これらの1000個の異なるデータセットの元のデータフレームにすべての行を入れたいと思います。 – zorro

答えて

1

、あなたは単にdrop_duplicates

df = df.drop_duplicates(subset=["houseID"]).iloc[:1000] 

を使用することができますブールインデックスを使用してgroupby.transform('count')を使用することができます。

df.loc[df.groupby("houseID")["houseID"].transform('count') < 3].iloc[:1000] 

EDIT:質問を誤解し、あなたはインデックス値に上記の機能を使用することができます。

# gets first 1000 unique id's 
unique_ids = df.drop_duplicates(subset=["houseID"]).iloc[:1000]["houseID"] 
# selects rows if their ID's are in unique_id dataframe 
df = df.loc[df["houseID"].isin(unique_ids)] 
+0

1000個のhouseIDのすべての行が必要です。私の例では、3つの異なるhouseIDがあり、私は2つの異なるhouseIDだけを必要としています(私の元のデータセットには、1つ以上の異なるhouseIDがあり、1000個のhouseIDのすべての行が必要です) – zorro

+0

@zorro 'drop_duplicates'は、異なるhouseIDとその行(最初に見られる)の1000行(存在する場合)を与えます。 – umutto

+0

私は 'SELECT * FROM houses WHERE COUNT(DISTINCT houseID)<= 1000'のようなものをデータフレームとhouseIDの列に入れたいと思っています:S – zorro

関連する問題