gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:16 25 4
gpt4 key购买 nike

我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com