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