计算大于阈值的值并分配给适当的年份熊猫

时间:2020-07-13 18:03:13

标签: python pandas dataframe datetime

我有一个看起来像这样的数据框:

Date    DFW
242 2000-05-01 00:00:00 75.92
243 2000-05-01 12:00:00 75.02
244 2000-05-02 00:00:00 71.96
245 2000-05-02 12:00:00 75.92
246 2000-05-03 00:00:00 71.96
... ... ...
14991   2020-07-09 12:00:00 93.90
14992   2020-07-10 00:00:00 91.00
14993   2020-07-10 12:00:00 93.00
14994   2020-07-11 00:00:00 89.10
14995   2020-07-11 12:00:00 97.00

df包含2000年至2020年5月至7月11日每12小时特定位置的温度最大值。我想计算该值> 90的次数,然后将该值存储在该行是年份的列中。我应该使用groupby来做到这一点吗?

预期输出:

Year   count
2000   x
2001   y
...   ...
2019   z
2020   a

2 个答案:

答案 0 :(得分:2)

您可以使用groupby

# extract the years from dates
years = df['Date'].dt.year

# compare `DFW` with `90`
# gt90 will be just True or False
gt90 = df['DFW'].gt(90)

# sum the `True` by years
output = gt90.groupby(years).sum()

# set the years as normal column:
output = output.reset_index()

所有内容都在一行中:

df['DFW'].gt(90).groupby().sum().reset_index()

答案 1 :(得分:1)

一种可能的方法是提取并创建年份的新列(假设为“ year”),然后

df[df['DFW'] > 90].groupby('year').count().reset_index()