python - 在 pandas 中删除基于时间的空组

标签 python pandas

我使用 group by 将数据帧分组为不同的日期,然后使用 concat 根据日期将它们分成训练组和测试组

gp = dfs_0.groupby(pd.TimeGrouper('B'))

train = pd.concat([ gp.get_group(group) for i,group in enumerate( gp.groups) if i < len(gp)-1 ])
test = pd.concat([ gp.get_group(group) for i,group in enumerate( gp.groups) if i == len(gp)-1 ])

但是,如果工作日是银行暂停,我没有数据,因此空组会返回错误:

Traceback (most recent call last): File "", line 1, in File "", line 1, in File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\groupby.py", line 640, in get_group raise KeyError(name) KeyError: Timestamp('2014-04-18 00:00:00', freq='B')

有没有办法在连接前过滤掉这些空组

最佳答案

有一些没有日期的问题,所以得到KeyError

我尝试创建自定义函数:

rng = pd.to_datetime(['2014-04-16','2014-04-17','2014-04-22 00:11:00','2014-04-22',
                      '2014-04-23','2014-04-23 10:00:03','2014-04-23 14:01:08'])
dfs_0 = pd.DataFrame({'col': range(7)}, index=rng)  
print (dfs_0)
                     col
2014-04-16 00:00:00    0
2014-04-17 00:00:00    1
2014-04-22 00:11:00    2
2014-04-22 00:00:00    3
2014-04-23 00:00:00    4
2014-04-23 10:00:03    5
2014-04-23 14:01:08    6
<小时/>
gp = dfs_0.groupby(pd.TimeGrouper('B'))

def get_cust_group(g, key):
    try:
        return g.get_group(key)
    except KeyError:
        return pd.DataFrame()

#change to get_cust_group
train = pd.concat([ get_cust_group(gp,group) for i,group in enumerate( gp.groups) if i < len(gp)-1 ])
test = pd.concat([ get_cust_group(gp,group) for i,group in enumerate( gp.groups) if i == len(gp)-1 ])
print (train)
                     col
2014-04-16 00:00:00    0
2014-04-17 00:00:00    1
2014-04-22 00:00:00    3
2014-04-22 00:11:00    2

print (test)
                     col
2014-04-23 00:00:00    4
2014-04-23 10:00:03    5
2014-04-23 14:01:08    6

关于python - 在 pandas 中删除基于时间的空组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45627813/

相关文章:

python - 使用 For 循环修改 Pandas 中的 DataFrame 字典

python - Django表单仅在表单有效时保存相关对象

python - 有没有比ffmpeg更合适的方式在Python中合并视频和音频文件?

python - 按值获取列表中具有重复列名称的列表

python - 用一个月而不是一年创建 Pandas 时间序列

python - 在 Pandas 数据框中选择多列

python - 如何在Python中将系列类型的列转换为日期时间工作日格式?

python - 使用 control-c 退出 python 脚本时的自定义输出

python - scikit learn 使用多项式朴素贝叶斯作为三元组分类器?

python - 如何使用 Python 在 Docker 容器中访问 ScyllaDB?