将列表数组重构/分解为多行以输出到csv

问题描述 投票:0回答:1

我有很多任务要在日期范围内平均分配。

任务列表始终包含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'
python pandas csv dataframe itertools
1个回答
0
投票

我找到了满足我需要的答案。请参阅下面的链接-MaxU的回答对我来说是最好的。

使用他的爆炸方法,我能够用一行代码来实现我的目标。

df2 = explode(df.assign(var1=df.Project.str.split(',')), 'Project')

Split (explode) pandas dataframe string entry to separate rows

© www.soinside.com 2019 - 2024. All rights reserved.