首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将内部0和第一个索引附加到第二个索引的二维列表中的所有元素- python

将内部0和第一个索引附加到第二个索引的二维列表中的所有元素- python
EN

Stack Overflow用户
提问于 2020-03-03 04:05:00
回答 2查看 15关注 0票数 0

你好,这里是python的新手……想知道解决这样的问题最好的方法是什么。

我有一个二维数组,看起来像这样:

代码语言:javascript
复制
a = [['October 17', 'Manhattan', '10024, 10025, 10026'], 
     ['October 17', 'Queen', '11360, 11362, 11365, 11368']]

我想通过迭代来创建一个新的列表或数据框,如下所示:

代码语言:javascript
复制
10024, October 17, Manhattan
10025, October 17, Manhattan
10026, October 17, Manhattan
11360, October 17, Queens
11362, October 17, Queens
11365, October 17, Queens
11368, October 17, Queens

任何见解都将不胜感激。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-03 04:12:16

您可能需要迭代这些值,对于每个值,还需要迭代您拥有的几个索引

代码语言:javascript
复制
values = [['October 17', 'Manhattan', '10024, 10025, 10026'],
          ['October 17', 'Queens', '11360, 11362, 11365, 11368']]

result = [[int(idx), row[0], row[1]]
          for row in values
          for idx in row[2].split(',')]
df = DataFrame(result, columns=['idx', 'date', 'place'])

要获得

代码语言:javascript
复制
[[10024, 'October 17', 'Manhattan'], [10025, 'October 17', 'Manhattan'], 
 [10026, 'October 17', 'Manhattan'], [11360, 'October 17', 'Queens'], 
 [11362, 'October 17', 'Queens'], [11365, 'October 17', 'Queens'], 
 [11368, 'October 17', 'Queens']]


     idx        date      place
0  10024  October 17  Manhattan
1  10025  October 17  Manhattan
2  10026  October 17  Manhattan
3  11360  October 17     Queens
4  11362  October 17     Queens
5  11365  October 17     Queens
6  11368  October 17     Queens
票数 1
EN

Stack Overflow用户

发布于 2020-03-03 05:42:23

Azro的答案很好,但这里有一种更明确的方法来解决这个问题(如果您是Python的新手,这种方法可能会更清楚,这样您就可以理解发生了什么-它不依赖于嵌套列表理解)。

代码语言:javascript
复制
a = [['October 17', 'Manhattan', '10024, 10025, 10026'], 
['October 17', 'Queen', '11360, 11362, 11365, 11368']]

# initialize an empty list to put our reformatted data into
final_result = []

for inner_list in a:
    # get the first two items
    first_item = inner_list[0]
    second_item = inner_list[1]

    # split the third list item, and remove trailing and leading whitespace
    remaining_data = [x.strip() for x in inner_list[2].split(',')]

    # iterate over the remaining data
    for item in remaining_data:
        # first, create a new sublist containing our first two items
        new_entry = [item, first_item, second_item]

        # add our new_entry into the final result list
        final_result.append(new_entry)

print(final_result)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60495859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档