ValueError: Истинное значение GeoDataFrame является неоднозначным - PullRequest
0 голосов
/ 08 марта 2019

Проблемы с фильтрацией некоторых значений 'name'. Я хочу сгруппировать по месяцу и имени, после этого отфильтровать определенное значение из имени столбца 'ar street3' и создать тренд этого.

это код, который я написал ниже:

df = pd.DataFrame({ 
'name'  : ['ar street3', 'ar street 3', 'ba foo', 'br', ' oo', 'ke'],
'month' : [1, 2, 3, 4, 5, 6],
'score' : [2.0, 5., 8., 1., 2., 9.]})

{fig, ax = plt.subplots(figsize=(11,7))
df.groupby(['month', 'name']).filter(lambda x: 'ar street3' in x,df).mean(['score']).unstack().plot(ax.ax)}

Я получаю этот тип ошибки:

ValueError: Значение истинности GeoDataFrame является неоднозначным. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

Может ли кто-нибудь указать мне правильное направление?

Заранее спасибо.

1 Ответ

0 голосов
/ 09 марта 2019

Если вы хотите объединить фильтр и группу в одну строку кода:

df = pd.DataFrame({'name'  : ['ar street3', 'ar street3', 'ba foo', 'br', ' oo', 'ke'],
                   'month' : [1, 2, 3, 4, 5, 6],
                   'score' : [2.0, 5., 8., 1., 2., 9.]})

tag = 'ar street3'
df = df.groupby(['month', 'name']).filter(lambda x: tag in x.name)

print(df)

, выведите:

         name  month  score
0  ar street3      1    2.0
1  ar street3      2    5.0

, если вы хотите добавить условие месяца:

tag = 'ar street3'; month = 1
df = df.groupby(['month', 'name']).filter(lambda x: tag in x.name and month == x.month)

         name  month  score
0  ar street3      1    2.0

если вы хотите только месяц:

#i have adapted the sample
df = pd.DataFrame({'name'  : ['ar street3', 'ar street3', 'ba foo', 'br', ' oo', 'ke'],
               'month' : [1, 2, 3, 4, 5, 1],
               'score' : [2.0, 5., 8., 1., 2., 9.]})

month = 1
df = df.groupby(['month', 'name']).filter(lambda x: month == x.month)

вывод:

         name  month  score
0  ar street3      1    2.0
5          ke      1    9.0
...