我有一本字典:[ { 'dates': ['2019-12-01'], 'periods': ['1', '1', '1', '1'] }, { 'dates': ['2019-12-02', '2019-12-03', '2019-12-04', '2019-12-05'], 'hh_periods': ['1', '1', '1', '20'] }]理想情况下,我想建立pd.Dataframe()一个colums=["p1", "p2", "p3", "p4"]看起来像这样: p1 p2 p3 p4dates 2019-12-01 1 1 1 12019-12-02 1 1 1 202019-12-03 1 1 1 202019-12-04 1 1 1 202019-12-05 1 1 1 20对于我的用例,我需要一些快速的东西,我尝试过:p = pd.DataFrame(data).explode('dates')p.set_index('dates', inplace=True)这很接近但最终是: hh_periodsdates 2019-12-01 [1, 1, 1, 1]2019-12-01 [1, 1, 1, 1]2019-12-02 [1, 1, 1, 20]2019-12-03 [1, 1, 1, 20]这并不理想。 * 更新 *所以我使用了 anky_91 的答案:cols = ["dates", "p1", "p2", "p3", "p4"]p = pd.DataFrame(self.build()).explode('dates')var = p[['dates']].join(pd.DataFrame(p.ffill(axis=1).iloc[:, -1].tolist()))var.columns = cols现在返回的结果在视觉上看起来是正确的:dates p1 p2 p3 p40 2019-12-07 1 0 0 00 2019-12-14 1 0 0 00 2019-12-07 1 0 0 00 2019-12-14 1 0 0 01 2019-12-01 1 0 0 0但是当我测试时:[ { 'dates': ['2019-12-07', '2019-12-14'], 'periods': ['333333', '0', '0', '0'] }, { 'dates': ['2019-12-01', '2019-12-08', '2019-12-15'], 'periods': ['1', '1', '333', '1'] }]我得到这样的df: dates p1 p2 p3 p40 2019-12-07 333333 0 0 00 2019-12-14 333333 0 0 00 2019-12-07 333333 0 0 00 2019-12-14 333333 0 0 01 2019-12-01 333333 0 0 01 2019-12-08 333333 0 0 01 2019-12-15 333333 0 0 01 2019-12-01 333333 0 0 0所以只有 p1 被捡起......:/p = pd.DataFrame(self.build()).explode('dates')print(p)按预期生成旧形式: dates hh_periods0 2019-12-07 [333333, 0, 0, 0]0 2019-12-14 [333333, 0, 0, 0]1 2019-12-01 [1, 1, 333, 1]1 2019-12-08 [1, 1, 333, 1] ( ... )
查看完整描述