如何在Python中迭代列表并从其他列表中添加值?

如何在Python中迭代列表并从其他列表中添加值?,python,pandas,list,loops,dataframe,Python,Pandas,List,Loops,Dataframe,我有一份清单: my_list=['ga:date'],['ga:country','ga:date'],['ga:country','ga:date'] 并尝试遍历它以获得值及其位置,如下所示: date 1 country 1 date 2 country 1 date 2 并将其全部储存在一个容器中 正如有人建议的那样,我可以这样做,而且效果非常好: 将列表理解与元组列表的枚举和展平一起使用: my_list = [['ga:date'], ['ga:country'

我有一份清单:

my_list=['ga:date'],['ga:country','ga:date'],['ga:country','ga:date']
并尝试遍历它以获得值及其位置,如下所示:

date    1
country 1
date    2
country 1
date    2
并将其全部储存在一个容器中

正如有人建议的那样,我可以这样做,而且效果非常好:

将列表理解与元组列表的枚举和展平一起使用:

my_list = [['ga:date'], ['ga:country', 'ga:date'], ['ga:country', 'ga:date']]

x = [(b, a) for i in my_list for (a, b) in enumerate(i, 1)]
print (x)
[('ga:date', 1), ('ga:country', 1), ('ga:date', 2), ('ga:country', 1), ('ga:date', 2)]

df = pd.DataFrame(x, columns = ['field','listIndex'])
print (df)
        field  listIndex
0     ga:date          1
1  ga:country          1
2     ga:date          2
3  ga:country          1
4     ga:date          2

或者,如果可能,更改柱的位置:

x1 = [z for i in my_list for z in enumerate(i, 1)]
print (x1)
[(1, 'ga:date'), (1, 'ga:country'), (2, 'ga:date'), (1, 'ga:country'), (2, 'ga:date')]

df = pd.DataFrame(x1, columns = ['listIndex','field'])
print (df)
   listIndex       field
0          1     ga:date
1          1  ga:country
2          2     ga:date
3          1  ga:country
4          2     ga:date

但是还有另外3个列表,我必须添加到结果df中

my_id_list = ['01', '02', '03']

start_dates = ['2019-01-01', '2019-01-03', '2019-01-10']

end_dates = ['2019-01-02', '2019-01-05', '2019-01-11']
所以它需要看起来像这样:

        field  listIndex   id start_date end_date
0     ga:date          1   01 2019-01-01 2019-01-02
1  ga:country          1   02 2019-01-03 2019-01-03
2     ga:date          2   02 2019-01-03 2019-01-03
3  ga:country          1   03 2019-01-10 2019-01-11
4     ga:date          2   03 2019-01-10 2019-01-11
        field  listIndex   id        start_ date  end_date
0     ga:date          1   115126931 2019-01-01   2019-01-02
1  ga:country          1   199714437 2019-01-03   2019-01-03
2     ga:date          2   199714437 2019-01-03   2019-01-03
3  ga:country          1   197531387 2019-01-10   2019-01-11
4     ga:date          2   197531387 2019-01-10   2019-01-11

值可以不同,没有固定值

如果能得到任何帮助,我将不胜感激,我只想在工作中结束一个项目,忘掉它

更新 我的id列表包含不同的整数。它们可以不同,我的意思是,下面这三个不是唯一的

my_id_list = ['115126931', '199714437', '197531387']
所以它需要看起来像这样:

        field  listIndex   id start_date end_date
0     ga:date          1   01 2019-01-01 2019-01-02
1  ga:country          1   02 2019-01-03 2019-01-03
2     ga:date          2   02 2019-01-03 2019-01-03
3  ga:country          1   03 2019-01-10 2019-01-11
4     ga:date          2   03 2019-01-10 2019-01-11
        field  listIndex   id        start_ date  end_date
0     ga:date          1   115126931 2019-01-01   2019-01-02
1  ga:country          1   199714437 2019-01-03   2019-01-03
2     ga:date          2   199714437 2019-01-03   2019-01-03
3  ga:country          1   197531387 2019-01-10   2019-01-11
4     ga:date          2   197531387 2019-01-10   2019-01-11

您可以尝试:

df=pd.DataFrame([(a,b,e) for e,i in enumerate(my_list) for (a, b) in enumerate(i, 1)],
                       columns=['list_index','feild','index_list_of_list'])
df1=pd.DataFrame(zip(map(int,my_id_list),start_dates,end_dates)
             ,columns=['id','startdate','enddate'])



注意事项:也可以考虑通过“代码> Pd、tox DATITEME())/<代码> < /P>将日期更改为DATE时间,到目前为止您尝试了什么?考虑存储每个列表的索引,同时列举为名为“代码> ID ”的列。使用您拥有的3个列表创建另一个df,并在

id
上合并,这是
id\u列表
很酷,谢谢,不过还有一段时间。ID不仅仅是数字,它们已经预先定义好了。我不能把任何号码作为身份证。@AnnaDmitrieva所以
我的身份证列表
你的身份证对吗?看起来你正在寻找列表列表下的列表索引进行映射,你能用更多关于如何加入的细节更新你的问题吗?是的,没问题,我会更新它。我的id列表是id,但它们看起来像“115126931”。@AnnaDmitrieva我已经更新了我的答案,想法是一样的,只有合并方法changes@AnnaDmitrieva没问题,而且mylist的枚举数也会更改,它应该从0开始,因为分配给数据帧的默认索引是0,所以在
right\u index
上进行合并是可行的:)