Получить количество дат по группам в DataFrame - PullRequest
0 голосов
/ 06 декабря 2018
Date    Latitude    Longitude   Disaster
2011-01-10  56.79   89.90   Cyclonic Flood
2011-02-09  56.79   89.90   Cyclonic Flood
2010-11-20  34.08   69.92   Cyclonic Flood
2011-01-10  56.79   89.90   Earthquake
2010-12-19  67.78   155.35  Earthqauke
2010-12-19  66.78   125.35  Cyclonic Flood
2010-12-19  66.78   125.35  Earthqauke
2017-09-10  56.99   98.22   Cyclonic Flood
2017-09-10  56.99   98.22   Cyclonic Flood

Столбец Date относится к типу date, и я новичок в проблемах, связанных с временными рядами, что вызывает у меня некоторые проблемы с задачей, в которой мне нужно сначала сгруппировать по Latitude и Longitude изатем подсчитайте, сколько дней (дат) было, когда произошло землетрясение в регионе. Я пытался использовать -

merged_df = pd.DataFrame(df.groupby(['Latitude','Longitude'])['Disaster'].count())

Кто-нибудь может подтвердить или помочь мне исправить это?

1 Ответ

0 голосов
/ 06 декабря 2018

Предполагая, что ваш набор данных содержит более одного типа стихийного бедствия на широту / долготу, ваш предпринятый код будет подсчитывать все даты катастрофы (не только землетрясения).

Для того, чтобы считать только даты землетрясения, вы можете отфильтроватьваш DataFrame, а затем DataFrame.groupby().count().Вот один из способов внесения изменений в данные в столбце «Авария», чтобы проиллюстрировать, почему было бы важно, чтобы в ваших данных содержалось более одного типа бедствия:

import pandas as pd

data = [
    ['2011-01-10', 56.79, 89.90, 'Earthquake'],
    ['2011-02-09', 56.79, 89.90, 'Earthquake'],
    ['2010-11-20', 34.08, 69.92, 'Cyclonic Flood'],
    ['2010-12-19', 66.78, 125.35, 'Earthquake'],
    ['2017-09-10', 56.99, 98.22, 'Cyclonic Flood'],
    ['2017-09-10', 56.99, 98.22, 'Earthquake'],
    ]

df = pd.DataFrame(data, columns=['Date', 'Latitude', 'Longitude', 'Disaster'])

# filter the DataFrame, then group and count
filtered = df[df.Disaster == 'Earthquake']
grouped = filtered.groupby(['Latitude', 'Longitude', 'Disaster']).count()

print(grouped)
# OUTPUT
#                                Date
# Latitude Longitude Disaster        
# 56.79    89.90     Earthquake     2
# 56.99    98.22     Earthquake     1
# 66.78    125.35    Earthquake     1
...