python - 使用 Pandas 计算 30 分钟时间段内列中的字符串值

标签 python pandas datetime time-series

我希望确定 3 个月数据样本中列中字符串变量的计数。每天随机抽取样本。我可以按小时对数据进行分组,但我需要大约 10k 行数据的 30 分钟间隔(例如 0500-0600、0600-0630)的保真度。

数据示例:

datetime               stringvalues
2018-06-06 17:00          A
2018-06-07 17:30          B
2018-06-07 17:33          A
2018-06-08 19:00          B
2018-06-09 05:27          A

我尝试将日期时间列设置为索引,但我无法弄清楚如何对“小时”以外的任何数据进行分组,并且我对字符串值计数没有保真度:

df['datetime'] = pd.to_datetime(df['datetime']
df.index = df['datetime']
df.groupby(df.index.hour).count()

返回的输出类似于:

              datetime     stringvalues
datetime
5                0              0
6                2              2
7                5              5
8                1              1
...

过去两天我对多重索引和重采样进行了一定的研究,但我一直找不到类似的问题。期望的结果看起来像这样:

datetime     A       B
 0500        1       2
 0530        3       5
 0600        4       6 
 0630        2       0
 ....

最佳答案

没有直接的方法在时间组件上执行 TimeGrouper,因此我们分两步执行此操作:

v = (df.groupby([pd.Grouper(key='datetime', freq='30min'), 'stringvalues'])
       .size()
       .unstack(fill_value=0))
v.groupby(v.index.time).sum()

stringvalues  A  B
05:00:00      1  0
17:00:00      1  0
17:30:00      1  1
19:00:00      0  1

关于python - 使用 Pandas 计算 30 分钟时间段内列中的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52323069/

相关文章:

python - 合并两个DataFrame而不丢失信息

javascript - Firestore Timestamp.fromDate 不是 UTC

mysql - 将日期时间与字符串进行比较时非法混合排序规则

django - 如何在日期时间字段上过滤 gte、lte 日期?

python - 我可以使用 Sphinx automodule 但在签名中删除模块名称吗?

python - pandas - 从日期时间数据框中的每一天获取第一个和最后一个值

python - 计算特定 row_pandas 之前和之后的行之间的差异

arrays - 如何创建二维以上的 Pandas 数据框?

python - Python 的 ROUND_HALF_EVEN 应该如何处理小于 1 的小数?

python - 将函数应用于 Pandas.DataFrame 中两列的每个组合的更好方法