2017-02-17 7 views
0

Так что у меня большой панд dataframe (Excel), который выглядит примерно так:Как df.loc ячейка в кадре данных Pandas с повторяющимися значениями индекса?

Teams  Season  Points 
Team A  1   5 
Team B  1   6 
Team C  1   4 
Team D  1   5 
Team A  2   7 
Team B  2   8 
Team C  2   3 
Team D  2   2 

Вы можете видеть, что все команды повторяются в индексе. Мой вопрос: есть ли способ «найти» на определенной ячейке в этом листе

Если бы я должен был выполнять df.loc [«Команда A», «Точки»], он печатает оба значения команды A. Есть ли способ, которым я могу указать WHICH Team A, которую я хочу использовать (сезон 1 или 2)?

ответ

1

Решение с DataFrame.query:

print (df.query('Teams=="Team A" and Season==1')['Points']) 
Teams 
Team A 5 
Name: Points, dtype: int64 

print (df.query('Teams=="Team A" & Season==1')['Points']) 
Teams 
Team A 5 
Name: Points, dtype: int64 

Если нужна скалярная вывод:

#unutbu solution from deleted answer 
print (df.query('Teams=="Team A" & Season==1')['Points'].item()) 
5 

print (df.query('Teams=="Team A" & Season==1')['Points'][0]) 
5 
print (df.query('Teams=="Team A" & Season==1')['Points'].values[0]) 
5 

Другим возможным решением создается MultiIndex - добавить столбец Season в index по set_index, а затем выберите :

df = df.set_index('Season', append=True) 
print (df) 
       Points 
Teams Season   
Team A 1   5 
Team B 1   6 
Team C 1   4 
Team D 1   5 
Team A 2   7 
Team B 2   8 
Team C 2   3 
Team D 2   2 

print (df.loc[('Team A',1)]) 
Points 5 
Name: (Team A, 1), dtype: int64 
+0

Спасибо, MultiIndex - это то, что мне нужно, я верю. Но что, если у меня больше столбцов, отличных от точек, и я хочу указать, из какого столбца извлечь? Пример Я попытался: 'печати (df.loc ([(player_or_team_name, rand_season)], [stat_name]))' я получаю TypeError: __call __() принимает от 1 до 2 позиционных аргументов, но 3 были даны I Думаю, у меня может быть формат, скобки/скобки неуместны? –

+0

также df.query дает мне пустую серию без значения? : 'Series ([], Name: Caps, dtype: object)' –

+0

Вы можете проверить документы - http://pandas.pydata.org/pandas-docs/stable/advanced.html#using-slicers для выбора multiindex. – jezrael

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

  • Нет связанных вопросов^_^