2017-03-11 3 views
0

は、以下のパンダのデータフレームで:pandas iterrorwsの実行中/実行後にインデックス位置を出力に戻す方法は?

d1 = pd.read_csv('to_count.mcve.txt', sep='\t') 
d1 = d1.set_index(['pos'], append=True) 

     M1   M2  F1 F2 
    pos       
0 23 A,B,A,C,D A,C,B A D 
1 24 A,B,B,C,B A,B,A B B 
2 28 C,B,C,D,E B,C  E C 

私はいくつかのカウントを行うために以下のコードを使用:

hapX_count = pd.DataFrame() 
hapY_count = pd.DataFrame() 
for index, lines in d1.iterrows(): 
    hap_x = lines['F1'] 
    hap_y = lines['F2'] 
    x_count = lines.apply(lambda x: x.count(hap_x)/2 if len(x) > 5 else x.count(hap_x)) 
    y_count = lines.apply(lambda x: x.count(hap_y)/2 if len(x) > 5 else x.count(hap_y)) 

    hapX_count = hapX_count.append(x_count) 
    hapY_count = hapY_count.append(y_count) 


print(hapX_count) 

出力は次のとおりです。

  F1 F2 M1 M2 
(0, 23) 1.0 0.0 1.0 1.0 
(1, 24) 1.0 1.0 1.5 1.0 
(2, 28) 1.0 0.0 0.5 0.0 

どのように私はインデックス値を取得することができます(pos)を以前のデータと同じように戻しますか?インデックスを使用してそれらのタプルの位置を呼び出すことができます。しかし、元のデータに複数のインデックス(posだけでなく)が存在するため、すべてのインデックスが保持されるようにプロセスを自動化したいと思います。

ありがとう、

答えて

1

forループの上の2行を次の行に置き換えることができます。これにより、インデックスがd1のインデックスと同じ名前の空のDataFramesが作成されます。

hapX_count = pd.DataFrame(index=d1.index[0:0]) 
hapY_count = pd.DataFrame(index=d1.index[0:0]) 
関連する問題