我有很多任务要在日期范围内平均分配。
任务列表始终包含5个元素,最后一个块除外,最后一个将在1到5个元素之间变化。
我汇总的过程将输出以下数据结构;
[{'Project': array([['AAC789A'],
['ABL001A'],
['ABL001D'],
['ABL001E'],
['ABL001X']], dtype=object), 'end_date': '2020-10-01'},
{'Project': array([['ACZ885G_MA'],
['ACZ885H'],
['ACZ885H_MA'],
['ACZ885I'],
['ACZ885M']], dtype=object), 'end_date': '2020-10-02'},
{'Project': array([['IGE025C']], dtype=object), 'end_date': '2020-10-03'}]
...但是我真的需要以下格式...
Project,end_date
AAC789A,2020-10-01
ABL001A,2020-10-01
ABL001D,2020-10-01
ABL001E,2020-10-01
ABL001X,2020-10-01
ACZ885G_MA,2020-10-02
ACZ885H,2020-10-02
ACZ885H_MA,2020-10-02
ACZ885I,2020-10-02
ACZ885M,2020-10-02
IGE025C,2020-10-03
我已经看过使用itertools进行重复和链接,但是我似乎对此一无所知。
这是我第一次大量使用Python。通常如何在Python中完成此操作?
这是我目前正在尝试执行的操作,但在下面出现错误。
df = pd.concat([pd.Series(row['end_date'], row['Project'].split(','))
for _, row in df.iterrows()]).reset_index()
AttributeError: 'numpy.ndarray' object has no attribute 'split'
我找到了满足我需要的答案。请参阅下面的链接-MaxU的回答对我来说是最好的。
使用他的爆炸方法,我能够用一行代码来实现我的目标。
df2 = explode(df.assign(var1=df.Project.str.split(',')), 'Project')
Split (explode) pandas dataframe string entry to separate rows