我有一个Pandas数据框,其形状如下:
TIME 2015-07-25_10:24:49 2015-07-25_10:24:51 2015-07-25_10:24:46 ...
NAME
Ed Kitchen None Office
Jane None Dining Room None
Robert None Kitchen None
Louisa None None Office
.
.
.
可以使用以下代码段重现此数据框:
import datetime
import pandas as pd
names = ['Ed', 'Jane', 'Robert', 'Louisa', 'Ed']
locations = ['Kitchen', 'Dining Room', 'Kitchen', 'Office', 'Office']
times = [datetime.datetime(2015, 7, 25, 10, 24, 49),
datetime.datetime(2015, 7, 25, 10, 24, 51),
datetime.datetime(2015, 7, 25, 10, 24, 51),
datetime.datetime(2015, 7, 25, 10, 24, 46),
datetime.datetime(2015, 7, 25, 10, 24, 46)]
data = {'TIME': times,
'NAME': names,
'LOCATIONS': locations}
df = pd.DataFrame(data=data)
df = df.pivot(index='NAME', columns='TIME', values='LOCATIONS')
从这个数据框中,我想生成一个数据框,其中列折叠为时间范围:
TIME 2015-07-25, 10:23-10:25 2015-07-25, 10:25-10:27 ...
NAME
Ed Kitchen Office
Jane Dining Room None
Robert Kitchen None
Louisa Office None
.
.
.
想要崩溃'给定数据尽可能少的列箱以消除尽可能多的NaN。列中的转换是从时间戳到一系列时间戳。所以,相反,艾德已经在厨房待了两分钟,'它是在10:23到10:25两分钟范围内的某个时刻,Ed在厨房里。'理想情况下,最后一个条目将被推入下一个时间戳范围,即使它实际上发生在第一个时间戳范围内。
如果我能以任何方式澄清,请随时告诉我。提前致谢 -