在DataFram中按组获取日期计数

2024-06-07 15:18:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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类型的,我对时间序列相关的问题不太熟悉,因此这给我的任务带来了一些麻烦,我需要首先按LatitudeLongitude分组,然后计算该地区发生地震的天数。我试着用-

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

有人能证实或帮我纠正吗?你知道吗


Tags: 类型dfdate时间序列地区floodlatitude
1条回答
网友
1楼 · 发布于 2024-06-07 15:18:07

假设您的数据集每个纬度/经度包含多个类型的灾难,您尝试的代码将计算所有灾难日期(不仅仅是地震)。你知道吗

为了只计算地震日期,您可以过滤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

相关问题 更多 >

    热门问题