Как добавить значения в список с помощью groupby?

#python #python-3.x #pandas #dataframe

#python #python-3.x #pandas #фрейм данных

Вопрос:

 df = pd.read_json(prices.json, orient = "records")    
df.groupby("Prices")["Discounts"].mean()


Prices
421.0     93.243137
415.0     91.830721
147.0     96.098335
451.0     98.308000
532.0     99.589286
             ...
1333.0    91.655944
7124.0    94.670829
1315.0    97.975439
6316.0    91.800000
1334.0    99.081081

 

У меня два вопроса.

Первый:

Как я могу добавить значения столбца «Цены» в список? Применение to_list метода к приведенному ниже коду добавляет только средние скидки в список, но мне также нужно отдельно извлечь первый столбец (цены) в список.

 prices_column = []
discounts_column = []

discounts_column.extend(df.groupby("Prices")["Discounts"].mean().to_list())

 

Второй:

Как я могу округлить средние номера скидок (второй столбец) до ближайшей сотни при добавлении значений в список?

Ответ №1:

Что-то вроде этого

 df = pd.DataFrame({'A': [1, 1, 2, 1],
                   'B': [1010.1112, 1300.009, 749.78, 900.98]})

df_dict = df.groupby('A')['B'].mean().round(2).to_dict()
a_column = list(df_dict.keys())
b_column = list(df_dict.values())
 

с результатом

 [1, 2]
[1070.37, 749.78]
 

что вы ищете?

Комментарии:

1. a_column выдает желаемый результат, но в моем случае b_column выводит только 100.

2. @Alexander Это, вероятно, потому, что ближайшее 100 к среднему значению равно 100 (для значений примера это определенно так). Может быть, я неправильно понял, что вы подразумеваете под «ближайшей сотней»?

3. например, 100 5678 должно быть 100,57.

4. @Alexander Я вижу. Обновил свой ответ.