Skip to main content
 首页 » 编程设计

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

2025年05月04日9kevingrace

我有一个包含日期和 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')]