我有一个包含三列的数据框:
主题{1,1,1,2,3,3,3,3,4,4,...}日期时间{6/4/16 3:04:30,6 / 5/16 6 :02:15,...} markers {}
按主题排序,然后按日期时间排序,标记列为空
我还有一本字典,用于将主题编号映射到日期时间列表。这些日期时间与数据框中已有的日期时间不完全相同。我想将所有这些日期时间添加到其对应的主题和日期行中的标记列以进行比较,因此,带有键(主题)1的字典具有值列表,如{6/4/16 5:00:15, 6/5/16 6:10:30}将第一个值添加到第1行,因为主题和日期匹配,并且出于同样的原因将第二个值添加到第2行。
我想到循环遍历每个字典键及其所有相应的日期时间,但是在嵌套循环中的每个日期时间在地图中找到相应的行将是非常低效的。它会是这样的:
for subject in df.iloc[:, 0]:
# go to subject in dictionary and loop through datetimes in corresponding list,
# adding the matching datetime to the current row
# O(n^2) time!
有更有效的方法吗?
谢谢!
答案 0 :(得分:0)
试试这个,你必须在某种程度上自定义答案以满足你的特定需求,但逻辑基本相同。
df = pd.DataFrame({'colA': [100,200],'colB': ['NaN','NaN']})
dict1 = {100: ['rat','cat','hat'], 200: ['hen','men','den']}
df = pd.concat([df['colA'],df['colA'].map(dict1).apply(pd.Series)], axis = 1)