Выбрать строку со средним значением в столбце Pandas - PullRequest
0 голосов
/ 09 июля 2020

Я хочу найти значение, которое находится в середине столбца Quantity.

  Branch Buyer  Quantity                Date
0      A  Carl         1 2013-01-01 13:00:00
1      A  Mark         4 2013-01-01 13:05:00
2      A  Carl         5 2013-10-01 20:00:00
3      A  Carl         1 2013-10-02 10:00:00
4      A   Joe         8 2013-10-01 20:00:00
5      A   Joe         1 2013-10-02 10:00:00
6      A   Joe         9 2013-12-02 12:00:00
7      B  Carl         7 2013-12-02 14:00:00

np.median([1,4,5,1,8,1,9,7]) возвращает, 4.5, но это не фактическое значение в столбце.

После сортировки:

[1, 1, 1, 4, 5, 7, 8, 9]

Как я могу получить строку с 4 или 5 для Quantity?

Ответы [ 4 ]

1 голос
/ 10 июля 2020

Вы можете использовать индекс, ближайший к середине списка:

lst = [1, 1, 1, 4, 5, 7, 8, 9]
print(lst[len(lst)//2])

Вывод:

5

Как видите, len(lst) приводит к 8, поэтому len(lst)//2 дает 4. Значение четвертого индекса lst равно 5.

1 голос
/ 09 июля 2020

Для четных записей в списке, как я понимаю, медиана - это среднее значение двух средних записей. Для нечетных записей медиана - это средняя запись.

для четного числа строк и отсортированных данных вы можете попробовать:

if df.shape[0] is even (add appropriate code):
  np.median(dataFrame.Quantity[:-1])
  or
  np.median(dataFrame.Quantity[1:])
1 голос
/ 09 июля 2020

Чтобы получить среднее значение столбца Quantity, вы можете попробовать следующее:

x=len(df['Quantity'])
df['Quantity'][(0+x)//2]
1 голос
/ 09 июля 2020

Попробуйте следующее:

a = [1, 1, 1, 4, 5, 7, 8, 9]

a[np.argmin(abs(a - np.median(a)))]

# Output: 4.0

Объяснение:

  1. найдите медиану, используя np.median()

  2. найдите расстояние между каждым числом и медианой, используя abs()

  3. найдите индекс числа, имеющего минимальное расстояние

  4. получите значение из исходный список с использованием индекса

Если есть несколько чисел, имеющих одинаковое расстояние (4 и 5 в вашем примере), будет выбрано то, что наступит раньше.

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