2017-01-16 15 views
0

私はpandasを使用してExcelファイルを読み込み、スプレッドシートをデータフレームに変換しています。それから、私はgroupbyを適用し、後で計算するためにget_groupを使って個々のグループを変数に格納します。 私の問題は、入力ファイルが常に同じサイズではないことです。時にはgroupbyが10個のdfs、時には25個などになることがあります。dfが最初のデータから欠落している場合、私のプログラムは無視しますか?pandas groupbyオブジェクトに不足しているデータフレームを無視させます

df = pd.read_excel(filepath, 0, skiprows=3, parse_cols='A,B,C,E,F,G', 
        names=['Result', 'Trial', 'Well', 'Distance', 'Speed', 'Time']) 
df = df.replace({'-': 0}, regex=True) #replaces '-' values with 0 
df = df['Trial'].unique() 
gb = df.groupby('Trial') #groups by column Trial 

trial_1 = gb.get_group('Trial  1') 
trial_2 = gb.get_group('Trial  2') 
trial_3 = gb.get_group('Trial  3') 
trial_4 = gb.get_group('Trial  4') 
trial_5 = gb.get_group('Trial  5') 

私の最初のデータのみ3つの試験があり、どのように私はそれを後で裁判4、5を無視するようになるだろう?と言いますか私のコードは、すべての試験が存在する場合に実行されますが、いくつかの文が必要とされるであろう場合、それは非常に多くのように聞こえるが、私の疲れた脳は事前に...

ありがとう!

+0

'ギガバイト.groups'はグループ名とラベルの辞書を返します:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.GroupBy.groups.html soあなたはグループを取得するためにこれらを使用することができます – EdChum

+0

愚かな質問には申し訳ありませんが、どうすればそれが役に立ちますか? – ElHi

+0

グループ内のグループ数をハードコードする必要はありませんので、 – EdChum

答えて

0
ないアイデアを持っていない:(不足していたときに失敗します

あなたのサイズをハードコーディングする必要はありませんので、あなたは、これがグループ名の辞書を返す属性.groupsを使用してグループを取得することができ、グループ化した後、あなたはちょうど動的辞書のキーを反復処理することができます。

In [22]: 
df = pd.DataFrame({'grp':list('aabbbc'), 'val':np.arange(6)}) 
df 

Out[22]: 
    grp val 
0 a 0 
1 a 1 
2 b 2 
3 b 3 
4 b 4 
5 c 5 

In [23]: 
gp = df.groupby('grp') 
gp.groups 

Out[23]: 
{'a': Int64Index([0, 1], dtype='int64'), 
'b': Int64Index([2, 3, 4], dtype='int64'), 
'c': Int64Index([5], dtype='int64')} 

In [25]:  
for g in gp.groups.keys(): 
    print(gp.get_group(g)) 

    grp val 
0 a 0 
1 a 1 
    grp val 
2 b 2 
3 b 3 
4 b 4 
    grp val 
5 c 5 
+0

大丈夫、今何を意味しているのですか。説明してくれてありがとう! [0L、 1L、 2L、 3L、 などは、持っているようだ:私はこのしかし gb_dict = gb.groups gb_dict [ '試行1'] アウト[162]で終わります元の値とフォーマットを失った - 構造を保存するために出力がデータフレーム内にあることを望みます! – ElHi

+0

あなたの質問を追加のコードと情報で編集してください。これをコメントに入れないでください – EdChum

関連する問題