2016-09-26 2 views
0

У меня есть DataFrame с индексом SubjectID два столбца с целыми значениями. Я хочу сохранить только те объекты, которые имеют значения в столбце Value 1 и столбец Value 2, и избавиться от объектов, имеющих только одно значение.Pandas сохраняет только индекс со значениями в обоих столбцах

Вот пример моего кадра данных:

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

Смежные вопросы