繁体   English   中英

Python for循环所有对的两个列表

[英]Python for loop over two lists for all the pairs

我有一个日期为ID的数据框-我需要提取每个日期和ID组合并创建一个新的数据框。

  date           id
2016-05-13       abc
2016-05-13       pqr
2016-05-14       abc
2016-05-14       pqr

ids = list(sorted(set(df['id'])))
Out: ['abc','pqr']

dates = list(sorted(set(df[df.id == ids[i]]['date'])))
Out: ['2016-05-13','2016-05-14']

for i in range(0,len(ids)):
    df2 = df[(df.date == dates[i]) & (df.id == id[i])]

上面的代码仅产生相对索引值(第一个日期,第一个ID和第二个日期,第二个ID)的输出( df2 ),但我需要所有对的输出。 请让我知道循环中要更改的内容吗?

创建一个新的数据框,其中每个id在列中,每个date在行中。 您可以稍后填写。

pd.DataFrame([], set(df.date), set(df.id))

在此处输入图片说明


如果您只想要组合列表

pd.MultiIndex.from_product([set(df.id), set(df.date)]).tolist()

[('pqr', '2016-05-14'),
 ('pqr', '2016-05-13'),
 ('abc', '2016-05-14'),
 ('abc', '2016-05-13')]

要获取所有对idsdates ,可以使用itertools作为

import itertools

for iid, ddate in itertools.product(ids, dates):
    df2 = df[(df.date == ddate) & (df.id == iid)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM