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
和{{1 }},然后计算该地区发生地震的天数(日期)。我尝试使用-
Longitude
任何人都可以确认或帮助我纠正这一点吗?
答案 0 :(得分:0)
假设您的数据集在每个纬度/经度上包含多种灾难,则您尝试的代码将计算所有灾难日期(而不仅仅是地震)。
要仅计算地震日期,可以先过滤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