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

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

【问题讨论】:

标签: python pandas dataframe matplotlib pandas-groupby


【解决方案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)
猜你喜欢
  • 2019-06-15
  • 1970-01-01
  • 2020-06-02
  • 2022-08-23
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
相关资源
最近更新 更多