#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 Я вижу. Обновил свой ответ.