2016-02-11 19 views
1

Я практикуюсь с Pandas, и я хочу получить диапазоны столбца из фрейма данных значениями другого столбца.Как получить диапазоны столбцов столбцов столбцов? В Pandas

Пример набора данных:

 Points Grade 
1  7.5  C 
2  9.3  A 
3  NaN  A 
4  1.3  F 
5  8.7  B 
6  9.5  A 
7  7.9  C 
8  4.5  F 
9  8.0  B 
10 6.8  D 
11 5.0  D 

Я хочу диапазоны групп точек для каждого класса, так что я могу вызвать пропущенные значения.

Для этой цели мне нужно получает что-то вроде этого:

Grade  Points 
    A  [9.5, 9.3] 
    B  [8.7, 8.0] 
    C  [7.5, 7.0] 
    D  [6.8, 5.0] 
    F  [1.3, 4.5] 

я могу получить его для и что виды питания, но это возможно с пандами в какой-то простой способ?

Я пробовал все группы, которые я знаю и ничего не знаю. Некоторое предложение?

ответ

1

Вы можете сначала отфильтровать df с notnull, а затем groupby и tolist с reset_index:

print df 
    Points Grade 
0  7.5  C 
1  9.3  A 
2  NaN  A 
3  1.3  F 
4  8.7  B 
5  9.5  A 
6  7.9  C 
7  4.5  F 
8  8.0  B 
9  6.8  D 
10  5.0  D 
print df['Points'].notnull() 
0  True 
1  True 
2  False 
3  True 
4  True 
5  True 
6  True 
7  True 
8  True 
9  True 
10  True 
Name: Points, dtype: bool 

print df.loc[df['Points'].notnull()] 
    Points Grade 
0  7.5  C 
1  9.3  A 
3  1.3  F 
4  8.7  B 
5  9.5  A 
6  7.9  C 
7  4.5  F 
8  8.0  B 
9  6.8  D 
10  5.0  D 

print df.loc[df['Points'].notnull()].groupby('Grade')['Points'] 
                .apply(lambda x: x.tolist()).reset_index() 
    Grade  Points 
0  A [9.3, 9.5] 
1  B [8.7, 8.0] 
2  C [7.5, 7.9] 
3  D [6.8, 5.0] 
4  F [1.3, 4.5] 
+0

о! не совсем то, что я искал, но работает для меня! ти! – Tzomas