получить индекс подсчитанного фрейма данных

#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]