gpt4 book ai didi

python - Pandas/python 并在数据框中使用带有日期的列

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:04 25 4
gpt4 key购买 nike

我目前正在从事一个 Python/Pandas 数据科学项目,以获取乐趣。我正在查看的数据有一个日期列,其中日期如下所示:2016-07-16。数据类型也是对象。我想要做的是遍历每个日期并从该行中提取数据。现在,某些行可能具有相同的日期,因为该日期发生了两次单独的攻击。 (我正在查看恐怖主义数据。)我目前所做的是以下内容:

dates = []
start = 0;
while start < 300:
date = data.iat[start, 1]
dates.append(date)
start += 1

这几乎会让我得到我想要的。但是,我有两个问题,开始变量设置为 0,但我无法转到 365,因为就像我说的,每个日期可能有多次攻击。所以一年可能会发生大约 400 次攻击。例如,有没有办法可以在 2016-12-31 或 2017-01-01 结束数据收集?基本上,有没有一种方法可以快速确定年复一年的攻击数量?感谢您的任何帮助!

哦,我会说我正在尝试类似的事情:

newDate = pd.to_datetime(startdate) + pd.DateOffset(days=1)

data['Date']) + timedelta(days=1)

在日期上加一以结束该年。没有得到我想要的东西,而且每天可能会有不止一个条目。

为了进一步解释我可以有这样的东西:

Date            Deaths     Country 
2002-01-01 2 India
2002-01-02 0 Pakistan
2001-01-02 1 France

数据大约有20,000点,我需要找到一种方法在每年年底停止它。这是我的主要问题。我不能去365,因为同一天世界各地可能会发生多起恐怖袭击。

最佳答案

IMO 无需添加新列:

In [132]: df
Out[132]:
Date Deaths Country
0 2002-01-01 2 India
1 2002-01-02 0 Pakistan
2 2001-01-02 1 France

In [217]: df.groupby(df.Date.dt.year)['Deaths'].sum()
Out[217]:
Date
2001 1
2002 2
Name: Deaths, dtype: int64

或者:

In [218]: df.groupby(pd.TimeGrouper(freq='AS', key='Date'))['Deaths'].sum()
Out[218]:
Date
2001-01-01 1
2002-01-01 2
Freq: AS-JAN, Name: Deaths, dtype: int64

In [219]: df.groupby(pd.TimeGrouper(freq='A', key='Date'))['Deaths'].sum()
Out[219]:
Date
2001-12-31 1
2002-12-31 2
Freq: A-DEC, Name: Deaths, dtype: int64

并且您始终可以访问日期时间列的不同部分(年、月、日、工作日、小时等):

In [137]: df.Date.dt.year
Out[137]:
0 2002
1 2002
2 2001
Name: Date, dtype: int64

In [138]: df.Date.dt.
df.Date.dt.ceil df.Date.dt.freq df.Date.dt.microsecond df.Date.dt.strftime df.Date.dt.weekday
df.Date.dt.date df.Date.dt.hour df.Date.dt.minute df.Date.dt.time df.Date.dt.weekday_name
df.Date.dt.day df.Date.dt.is_month_end df.Date.dt.month df.Date.dt.to_period df.Date.dt.weekofyear
df.Date.dt.dayofweek df.Date.dt.is_month_start df.Date.dt.nanosecond df.Date.dt.to_pydatetime df.Date.dt.year
df.Date.dt.dayofyear df.Date.dt.is_quarter_end df.Date.dt.normalize df.Date.dt.tz
df.Date.dt.days_in_month df.Date.dt.is_quarter_start df.Date.dt.quarter df.Date.dt.tz_convert
df.Date.dt.daysinmonth df.Date.dt.is_year_end df.Date.dt.round df.Date.dt.tz_localize
df.Date.dt.floor df.Date.dt.is_year_start df.Date.dt.second df.Date.dt.week

关于python - Pandas/python 并在数据框中使用带有日期的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39580450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com