2016-09-26 9 views
0

私はSubjectIDと呼ばれるインデックスを持つDataFrameを2つの整数値で持っています。私はValue 1列とValue 2列に値を持つ科目だけを残し、1つの値しか持たない科目を取り除きたい。ここでパンダは両方の列の値だけをインデックスとして保持します

は私のデータフレームの例である:

SubjectID Value1 Value2 
B1   1.57  1.75 
B2   N/A  1.56 

は、だから私は、最初の行だけを維持したいと思います。

df_to_add = [] 
for sub in df.index: 
    values = df.loc[df.index]['Value1']['Value2'] 
    if type(values) is pd.Series: # check that subject had multiple values, don't want otherwise 
     array = values.values 
     if "'Value1'" in scans_array and "'Value2'" in array: 
      df_to_add.append(df.loc[df.index]) 
    else: 
     pass 

答えて

2

は、あなたのN/Aは実際のNaNであると仮定すると、あなたは、単に.dropna()あなたDATAFRAMEができます:ここで私はこれまでに書いたコードです

import pandas as pd 

df = pd.DataFrame({'SubjectID': ['B1', 'B2'], 
        'Value1': [1.57, float('nan')], 
        'Value2': [1.75, 1.56]}) 
df = df.set_index('SubjectID') 

print(df) 
#   Value1 Value2 
# SubjectID     
# B1   1.57 1.75 
# B2   NaN 1.56 

print(df.dropna()) 
#   Value1 Value2 
# SubjectID     
# B1   1.57 1.75 
+0

雅、それは+1優れている – jezrael

+0

うん、それは素晴らしい仕事しました本当にありがとう! – MScar

関連する問題