我有一个列表,其中“SUMMARY”元素和下一个元素之间的项数是不固定的
list = ['SUMMARY - Dec 2013', 'Person1', 'None', 'None', '10', 'SUMMARY - Dec 2013', 'Person2', '20', 'SUMMARY - Jan 2014', 'Person3', 'None']
我试图实现的是将列表转换为一个数据帧,其中每行以“SUMMARY”元素开头
我用过
match = []
match.append([n for n, l in enumerate(list) if l.startswith('SUMMARY')])
使用输出[[0, 5, 8]]
获取包含“SUMMARY”的项的索引,我希望我的数据帧的每一行从其索引包含在match
中的相应项开始。在本例中,match有3个元素,因此我希望我的dataframe有3行和以下结构:
'SUMMARY - Dec 2013', 'Person1', 'None', 'None', '10'
'SUMMARY - Dec 2013', 'Person2', '20', NA, NA
'SUMMARY - Jan 2014', 'Person3', 'None', NA, NA
基本上,当特定行的项目数小于最大列数时,其余部分将填充NA/NaN
感谢您提供的示例数据。如果从单个系列开始,则更容易实现这一点。您可以根据是否存在“摘要”对数据行进行分组,然后使用它跨列聚合和重新分解数据
感谢@Shubham Sharma建议迭代组:
相关问题 更多 >
编程相关推荐