Панды только возвращают значение из ячейки - PullRequest
1 голос
/ 02 апреля 2019

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

Мой код выглядит следующим образом:

df:
Fruit   Value
apple     7.0
banana    6.0
orange    8.0
lemon     3.0
melon     2.0

myList = ['apple', 'lemon']

result = []

for word in myList:

    result.append(df['Value'].loc[df['Fruit'] == word].values)

print(result)

Оператор print выводит:

[array([], dtype=float64), array([7.0]), array([], dtype=float64), array([3.0])]

Мой желаемый вывод - это просто массив значений с плавающей запятой:

[7.0, 3.0]

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

1 Ответ

1 голос
/ 02 апреля 2019

Используйте Series.isin с boolean indexing и конвертируйте в список:

print (df.loc[df['Fruit'].isin(myList), 'Value'].values.tolist())
[7.0, 3.0]

Моя конечная цель - получить среднее значениемассив.

Тогда лучше вызвать mean отфильтрованного Series:

val = df.loc[df['Fruit'].isin(myList), 'Value'].mean()
print (val)
5.0
...