2016-07-04 13 views
0

パンダデータフレームのデータ検索

   icd_code from_date paid_amount 
claim_id          
CKEY-7724339 719.43 2015-09-26  300.09 
CKEY-5008998  722.2 2015-04-21  11.65 
CKEY-7896598  722 2015-02-23  17.19 
CKEY-7758556  850.9 2014-03-13  414.02 
CKEY-7749118  847.0 2012-07-18   4.42 
CKEY-10383160 854.00 2015-06-16  751.68 
CKEY-10678452 607.84 2015-07-07  11.13 
CKEY-10734364 882.2 2015-07-22  5625.00 
CKEY-3500566 307.89 2011-08-09  500.00 
CKEY-10766667 344.1 2013-12-03  139.41 

私が取得するための.locを使用し、出力は次のされてここに私のサンプルパンダのデータフレームであるとして

$ indexed_data.loc['CKEY-10766667'] 
icd_code   344.1 
from_date  2013-12-03 
paid_amount  139.41 
Name: CKEY-10766667, dtype: object 

~~~~~~~~expected output ~~~~~~~~~~ 
CKEY-10766667 344.1 2013-12-03  139.41 

誰かが上記で間違っているものを私を指すことができますコード

注:「claim_id」に作成されたインデックスに設定された元のデータに対して、data.set_index( 'claim_id')を呼び出しています。以下のコードを使用し

+0

なぜ出力が期待されますか?返されるものは、その行を表す 'Series'です – EdChum

+0

同じインデックスの複数の行がある場合、出力は期待される出力です – chandu

+0

期待される出力のタイプは何ですか? '.loc'は' pandas.Series'を返します。値だけが必要なら 'indexed_data.loc ['CKEY-10766667']。values' – ysearka

答えて

0

は私期待ouputをを与えた:一つだけの行が存在する場合、複数の行が存在し、シリーズ場合

$>>> indexed_data.loc[['CKEY-8369057']] 

.LOCする単一の値を渡すとデータフレームを返します。しかし、リストを.locに渡すと、常にDataframeが返されます。

実行時を考慮すると、リストを渡すと、特に文がループ内にあるときに、単一の要素よりも多くの時間が消費されます。ここで私は上記のコードは、我々はこれらの三行の末尾にデータフレームを持っていることを確認します

df = indexed_data.loc[x] 
if type(df).__name__ == 'Series': 
    df = df.to_frame().T 

をより良い実行時間を達成するために何をしたかです。