Столбец Dataframe если условие - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь проанализировать набор данных игроков для домашней работы. У меня есть набор данных, который включает в себя имя, очки, помощь, год и т. Д. Я пытаюсь проанализировать игроков, которые играют в 2017 году, поэтому сначала я хочу напечатать их имена, очки, помощь и т. Д.

Когда я пытаюсь использовать следующий код:

for i in df1.columns:
    if df1['Year'] == 2017:
         print(df1.loc[:, ["Year","Player","Pos","Team","Games","AST","PTS","PPG"]])

Я получаю ошибку с этим кодом, которая говорит мне, что необходимо добавить .any() или .all().

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-101-c1ff6e025cb7> in <module>()
      1 for i in df1.columns:
----> 2     if df1['Year'] == 2017:
      3          print(df1.loc[:, ["Year","Player","Pos","Team","Games","AST","PTS","PPG"]])

/opt/conda/lib/python3.6/site-packages/pandas/core/generic.py in __nonzero__(self)
   1574         raise ValueError("The truth value of a {0} is ambiguous. "
   1575                          "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
-> 1576                          .format(self.__class__.__name__))
   1577 
   1578     __bool__ = __nonzero__

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Я добавил их в код.

for i in df1.columns:
if df1['Year'].all() == 2017:
     print(df1.loc[:, ["Year","Player","Pos","Team","Games","AST","PTS","PPG"]])

Этот кодовый блок не возвращает никакого вывода (без ошибок и т. Д.)

Также я думаю, что это можно сделать с помощью понимания списка, но я не смог найти способ. Должно быть так:

df2 = [df1['Year','Player','Pos','Team','Games','AST','PTS','PPG'] if (df1['Year'].any() == 2017) else "Bye" for i in df1.Year]
    print(df2)

Но здесь есть проблема, которая заключается в том, что этот код всегда вводит оператор else и выводит только «Пока».

1 Ответ

0 голосов
/ 05 мая 2019

, если вы просто хотите напечатать другие столбцы, где год 2017, вы можете сделать это

print(df1[df1['Year']==2017].loc[:,["Year","Player","Pos","Team","Games","AST","PTS","PPG"]])

без итерации по столбцам, как у вас, и не с помощью оператора if, кадры данных pandas имеют хорошую индексацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...