我有个问题我想创建一个示例 Dataframe 。如你所见,有11个任务。特别是对于Task2
,Task3
和Task7
,您可以选择-因此您只能选择路径。
我想为每个任务创建一个开始和结束时间的示例 Dataframe 。我怎么能这么做重要的是,每一个终点都应该以未来为起点。进一步的工作也应该在将来。Task2_Start > Task1_End
或Task5_End > Task5_Start
。注意特殊情况可以从Task8
返回到Task7
。So Task7_Start > Task8_End > Task8_Start > Task7_End
,因为你可以回到task7
。
如何创建一个示例 Dataframe ?
我想要三列(下面你可以找到一个例子)
d = {'id': [],
'step': [],
'timestamp': []}
import pandas as pd
import random
steps = ['Task1', 'Task2', 'Task3', 'Task4', 'Task5', 'Task6', 'Task7', 'Task8', 'Task9', 'Task10', 'Task11']
num_ids = 10
data = []
for id in range(1, num_ids + 1):
current_step = 'Task1'
for _ in range(len(steps)):
data.append({'id': id, 'step': current_step})
if current_step == 'Task2':
next_step = random.choice(['Task3', 'Task4'])
elif current_step == 'Task7':
next_step = random.choice(['Task8', 'Task9'])
elif current_step == 'Task3':
next_step = random.choice(['Task5', 'Task11'])
else:
next_step = random.choice(steps)
current_step = next_step
df = pd.DataFrame(data)
df['timestamp'] = pd.Timestamp.now().strftime('%Y-%m-%d %H:%M:%S')
只有三个且没有条件的示例
import pandas as pd
d = {'id': [1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2],
'step': ['Task1_Start', 'Task1_End1', 'Task2_Start', 'Task2_End', 'Task3_Start', 'Task3_End',
'Task1_Start', 'Task1_End1', 'Task2_Start', 'Task2_End', 'Task3_Start', 'Task3_End',],
'timestamp': ['2023-01-01', '2023-01-05', '2023-01-10', '2023-01-12', '2023-02-12', '2023-02-14',
'2023-01-01', '2023-01-05', '2023-01-10', '2023-01-12', '2023-01-15', '2023-02-16',]}
df = pd.DataFrame(data=d,)
1条答案
按热度按时间bmp9r5qi1#
我不完全确定您在寻找什么,但我认为您可能希望创建一个字典(在我下面的代码中为
steps
),将每个任务Map到可能的下一个任务列表。此外,通过将每个“时间戳”存储为
datetime
对象,您可以在每一步添加一个timedelta
--这里我在每一步添加了一个30到60之间的随机秒数。也就是说,每个“id”具有比前一个晚30-60秒的时间戳。您还可以定义一个字典,将每个任务Map到任务所需的时间,如
然后将for循环内的替换代码替换为
这将
get
从times_dict
的可能时间范围,并在该范围内随机选择秒数,如果当前任务不在times_dict
中,则默认为(30,60)。