Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫-基于重叠时间段的分割数据集_Python_Pandas - Fatal编程技术网

Python 熊猫-基于重叠时间段的分割数据集

Python 熊猫-基于重叠时间段的分割数据集,python,pandas,Python,Pandas,我的报告时间段从周一开始,周日结束,持续5周。例如: 11/20/2017 - 12/24/2017 = t1 11/27/2017 - 12/31/2017 = t2 我有一个由6个时段组成的数据帧(从2017年11月20日开始),我正试图使用LeaveDate列将每个时段分成6个数据帧。我的数据如下所示: Barcode LeaveDate ABC123 2017-11-22 ABC124 2017-12-04 ABC125 2017-12-15 当数据帧被分离时,一些

我的报告时间段从周一开始,周日结束,持续5周。例如:

11/20/2017 - 12/24/2017 = t1 
11/27/2017 - 12/31/2017 = t2
我有一个由6个时段组成的数据帧(从2017年11月20日开始),我正试图使用
LeaveDate
列将每个时段分成6个数据帧。我的数据如下所示:

Barcode LeaveDate  
ABC123  2017-11-22 
ABC124  2017-12-04  
ABC125  2017-12-15
当数据帧被分离时,一些条形码将分为多个周期-这没关系。我知道我能做到:

df['period'] = df['LeaveDate'].dt.to_period('M-SUN')
df['week'] = df['period'].dt.week

得到一周,但我不知道如何定义“多周”时期。问题还在于,条形码可能在多个时段内填满,因此需要将其输出到多个数据帧。有什么想法吗?谢谢

可能会有一个更简洁的解决方案,但这应该是可行的(将为您提供一个数据帧字典,每个周期一个):

df=pd.DataFrame(['ABC123','2017-11-22'],
[ABC124',2017-12-04'],
[ABC125',2017-12-15'],
列=['Barcode','LeaveDate'])
期间=[('2017-11-20','2017-12-24'),('2017-11-27','2017-12-31')]
结果={}
对于期间中的期间:

period_df=df[(df['LeaveDate']>=period[0])&(df['LeaveDate']使用
{x:y代表x,y在df.groupby(pd.Grouper(key='LeaveDate',freq='W-MON'))中使用]
?很高兴它对你有用。刚刚意识到在上面的示例中,我忘记了定义我的空字典。现在将进行编辑,以防将来有人阅读,尽管看起来你已经完成了这部分。是的,我把它放进去了,但感谢你回来检查。嘿,@thesilkworm只是想知道,你怎么能返回ba检查数组格式的数据…x为2d数组,y为1d数组?…i
df = pd.DataFrame([['ABC123', '2017-11-22'],
                   ['ABC124',  '2017-12-04'],
                   ['ABC125',  '2017-12-15']],
                   columns=['Barcode', 'LeaveDate'])
periods = [('2017-11-20', '2017-12-24'), ('2017-11-27', '2017-12-31')]

results = {}
for period in periods:
    period_df = df[(df['LeaveDate'] >= period[0]) & (df['LeaveDate'] <= period[1])]
    results[period] = period_df