#python-3.x #pandas #dataframe
#python-3.x #панды #фрейм данных
Вопрос:
Я пытаюсь вернуть оператор index of DataFrame, сначала я загружаю CSV (пример CSV ниже)
Я создал код для подсчета количества каждого часа и возврата максимального числа, как показано ниже
import pandas as pd
filename = 'mylist.csv'
df = pd.read_csv(filename)
df['Start Time'] = df['Start Time'].astype('datetime64[ns]')
df['hour'] = df['Start Time'].dt.hour
# find the most common hour (from 0 to 23)
popular_hour = df.groupby(['hour'])['hour'].count().max()
print('Most Frequent Start Hour:', popular_hour)
то, что я пытаюсь сделать, это вернуть час, а не подсчитанное значение, я пробовал index
, как показано ниже, но не работает
popular_hour = df.groupby(['hour'])['hour'].count().max().index.values
Ответ №1:
Я думаю, вам нужно Series.idxmax
для индекса максимального значения Series
, возвращаемого GroupBy.count
:
Обратите внимание: для преобразования в datetimes лучше использовать параметр parse_dates
in read_csv
.
df = pd.read_csv(filename, parse_dates=['Start Time','End Time'])
df['hour'] = df['Start Time'].dt.hour
popular_hour = df.groupby(['hour'])['hour'].count().idxmax()
Другая идея заключается в использовании Series.value_counts
— существует сортировка по умолчанию, поэтому первое значение также является максимальным:
popular_hour = df['hour'].value_counts().idxmax()
работает так же, как при выборе первого индекса:
popular_hour = df['hour'].value_counts().index[0]