我有一个看起来像这样的数据框:
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
答案 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()