2017-03-15 7 views
0

こんにちは、私は2列appt_numberとステータス持っている私のような重複appt_numberと行に興味があります:私はちょうどの例のように、他の第1および何かでnotdoneですべての値を取得したいと思い次のクエリを取得するには?

  appt_number  status 
191624  100001718895 complete 
41105  100001718895 notdone 

上記は、 は、例えば、この場合は私のために重要ではありません。

81735  100002203648 cancelled 
81738  100002203648 suspended 

それはnotdone

で始まっていないので、私が試した:

print(df[['appt_number','status']]).sort(['appt_number'],ascending=True) 

しかし、私が得たので、私は希望のケースを得るために、この結果をきれいにする必要があります。

  appt_number  status 
140935  100000444380 complete 
77626  1000011340 complete 
222687  100001204805 complete 
191624  100001718895 complete 
41105  100001718895 notdone 
293961  100002049980 complete 
81735  100002203648 cancelled 
81738  100002203648 suspended 
76059  100003318442 complete 
287598  100003867456 complete 
7733  100004968279 complete 
276560  100006105890 complete 
166713  10000685700 complete 

だから私は有用なフィードバックの後、本当に、この困難な課題を克服するための支援に感謝 う私が試した:

df['counter'] = df.groupby('appt_number').status.transform('size') 
df = df[df.counter >=2] 
df = df[df['status'].isin(['cancelled','complete','notdone','pending','suspended'])] 
#df = df[df.status == 'notdone'] 
print(df[['appt_number', 'status']].sort(['appt_number'],ascending=True)) 

は、しかし、私が得た:

  appt_number  status 
41105  100001718895 notdone 
191624  100001718895 complete 
81738  100002203648 suspended 
81735  100002203648 cancelled 
227320  100011167163 pending 
274408  100011167163 suspended 
241047  100011167163 suspended 
274414  100011167163 complete 
274409  100011167163 suspended 
137816  100012143654 complete 

が、私は最初にnotdoneし、その後、次のように変更されたことをもので、単に興味があります:だから私は本当にただこれらのケースを取得するために支援をお願い申し上げます

  appt_number  status 
41105  100001718895 notdone 
191624  100001718895 complete 

+0

:うち

df = df[['appt_number','status']].sort_values(by='appt_number', ascending=True) df2 = df.loc[df.status == 'notdone'] df3 = pd.merge(df, df2, on='appt_number') df3 

:で

を)?実際のデータを扱うのが簡単になりました – Vaishali

答えて

1

この小さなやつを試してみてください:15(あなたがdf.headを投稿することができ

appt_number  status_x status_y 
0 101420561364 notdone  notdone 
1 139015260682 notdone  notdone 
... 
n 139144839318 notdone  notdone 
0

これは、トリックを行います

df['counter'] = df.groupby('appt_number').status.transform('size') 
df = df[df.counter >=2] 
df = df[df.status == 'notdone'] 
+0

ありがとうございますが、まだ完全な解決策がありますが、本当にサポートに感謝します。 – neo33

関連する問題