Как поменять название столбцов в dataframe
Есть dataframe post_count мне нужно вывести у каких пользователей сколько постов в формате: %UserID% - %Количество постов%; Но почему-то у получившейся таблицы я не могу переименовать столбцы ни методом rename ни методом columns
import pandas
import requests
info = requests.get("https://jsonplaceholder.typicode.com/posts")
info_table = pandas.DataFrame(info.json())
post_count = info_table['userId'].value_counts()
Ответы (3 шт):
во-первых, value_counts()
возвращает Series
, а не DataFrame
, поэтому вы не можете переименовать там "столбцы".
во-вторых, вам нужно не value_counts()
, а группировка с подсчетом:
post_count = info_table.groupby('userId', as_index=False)['title'].count().rename(columns={"title": "Количество постов"})
post_count:
userId Количество постов
0 1 10
1 2 10
2 3 10
3 4 10
4 5 10
5 6 10
6 7 10
7 8 10
8 9 10
9 10 10
Метод .rename()
на Series работает немного по-другому, чем на DF, но работает. К вашему решению нужно просто добавить еще два метода - Series.rename() и Series.reset_index(). Первый, чтобы переименовать серию, а второй чтобы преобразовать серию во фрейм, одновременно перенеся индекс в столбец userId
и название серии в заголовок столбца Количество постов
.
post_count = info_table['userId'].value_counts().rename("Количество постов").reset_index()
userId Количество постов
0 1 10
1 2 10
2 3 10
3 4 10
4 5 10
5 6 10
6 7 10
7 8 10
8 9 10
9 10 10
Более короткий способ получить тоже самое. Без rename
и без использования requests
:
import pandas as pd
df = (pd
.read_json("https://jsonplaceholder.typicode.com/posts")
.value_counts('userId')
.to_frame("Количество постов")
.reset_index())