根据 Pandas Dataframe 中的时间戳列过滤给定的列(计数)

Posted

技术标签:

【中文标题】根据 Pandas Dataframe 中的时间戳列过滤给定的列(计数)【英文标题】:Filter a given Column(count) based on timestamp Column in Pandas Dataframe 【发布时间】:2020-12-06 13:24:20 【问题描述】:
    我有一个如下所示的 Pandas 数据框

我想要我的输出或可视化图说明: 在哪一小时内,有多少作业失败、完成(计数)

【问题讨论】:

Please don't post images of code/data (or links to them) 【参考方案1】:

首先按boolean indexing 过滤,只过滤由Failed 填充的行,然后使用crosstabDataFrame.plot.bar

df1 = df[df['Status'].eq('Failed')]
out = pd.crosstab(df1['Hour'], df1['Job'])

out.plot.bar()

【讨论】:

Pandas Version '0.25.3' : AttributeError: 'DataFrame' object has no attribute 'crosstab' 我正在检查问题所在。以上版本支持吗?【参考方案2】:
import pandas as pd

df = pd.read_csv('./data.csv')

# status
status = set(df['Status'])
dfStatus = s: df[df['Status'] == s] for s in status

# hours
hours = set(df['Hour'])
dfStatusPerHour = 

# calculate them explicitly
for s in status:
    dfStatusPerHour[s] = h: dfStatus[s][dfStatus[s]['Hour'] == h].shape[0] for h in hours

# show results
for s in status:
    print(f"s : dfStatusPerHour[s]")

【讨论】:

s:是一个字符串,如果它在 Pandas DataFrame 中会更有帮助,这样我就可以对输出进行更多数据分析。 for s in status: output = pd.DataFrame() output = output.append(dfStatusPerHour[s], ignore_index=True)

以上是关于根据 Pandas Dataframe 中的时间戳列过滤给定的列(计数)的主要内容,如果未能解决你的问题,请参考以下文章

遍历 Float 时间戳的 Pandas DataFrame 并转换为日期时间

Pandas DataFrame 按时间戳分组

选择由 DatetimeIndex 索引的 Pandas DataFrame 的子集和时间戳列表

Python根据pandas中的时间戳查找多个值

如何根据 Pandas 中的列表过滤 DataFrame 中的项目?

根据 pandas 中的多个键合并两个 DataFrame