如何解决按月分组,但只获取 Pandas 列中真实值的总数
我认为这很简单,但我不知道如何获取我想要的数据。
我在名为 ClosedDate 和 Is_Article_Linked 的数据框中有两个字段。我想按 ClosedDate 的月份对其进行分组,然后仅在 Is_Article_Linked 为真但仍保留总记录时才进行计数。
例如我的代码看起来像这样
data = [
[ ('ClosedDate','2021-01-18T12:46:38.000+0000'),('Is_Article_Linked',True) ],[ ('ClosedDate','2021-01-29T12:46:38.000+0000'),'2021-01-11T12:46:38.000+0000'),False) ],'2021-01-03T12:46:38.000+0000'),'2021-01-12T12:46:38.000+0000'),True) ]
]
df_ld = pd.DataFrame(data,columns=['ClosedDate','Is_Article_Linked'])
# Formatting the date field
df_ld['ClosedDate'] = pd.to_datetime(df_ld['ClosedDate'],format="%y-%m-%d",exact=False)
# Grouping by Month
relevant_links = df_ld.resample('M',on='ClosedDate').count()
# Renaming the index
relevant_links.index = relevant_links.index.rename('Date')
# Outputting to a dictionary
link_accuracy_by_month = relevant_links.reset_index().to_dict('records')
print(link_accuracy_by_month)
这输出的是[{'Date': Timestamp('2021-01-31 00:00:00'),'ClosedDate': 5,'Is_Article_Linked': 5}]
我期待看到的是 [{'Date': Timestamp('2021-01-31 00:00:00'),'Is_Article_Linked': 3}]
所以 ClosedDate 是我的总记录数,而 Is_Article_Linked 只计算 True 的记录。目前它正在统计所有这些,因为我认为它看到了那里的价值。
无论如何可以获得我正在寻找的结果?我相信我的答案是在重新采样中,但我不知道如何让它只计算真实的。
提前致谢!
解决方法
假设您提供的数据格式不正确,因此数据框实际上看起来像:
ClosedDate Is_Article_Linked
0 2021-01-18 True
1 2021-01-29 True
2 2021-01-11 False
3 2021-01-03 False
4 2021-01-12 True
你可以这样做:
df_ld.resample("M",on = "ClosedDate")\
.agg({"ClosedDate": "count","Is_Article_Linked":"sum"})\
.rename_axis("Date")\
.reset_index()\
.to_dict("records")
输出
[{'Date': Timestamp('2021-01-31 00:00:00'),'ClosedDate': 5,'Is_Article_Linked': 3}]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。