首页 > 解决方案 > 按重复顺序为每个多索引设置列的值

问题描述

我有一个df包含 60 个日期的数据框,每个日期有 400 个 ID。看起来像这样:

 Date       ID
 2018-01-01   1000
 2018-01-01   1001
 ....
 2018-02-01   1000
 2018-02-01   1001    

现在我想做的是创建第三列。对于给定日期的所有 ID,其值相同。我为此创建了一个单独的单列数据框df_value,其中包含 60 个按降序排列的随机生成值:

     Value 
     350
     340
     337
     323
     ...

最后它应该是这样的:

 Date       ID        Value
 2018-01-01   1000     350
 2018-01-01   1001     350
 ....
 2018-02-01   1000     340
 2018-02-01   1001     340

Date我尝试使用和作为索引创建一个 groupby 数据框,ID以便稍后在Placeholder列中添加值。但无法真正弄清楚从那里去哪里:

                     Placeholder
 Date       ID
 2018-01-01   1000       1
 2018-01-01   1001       1
 ....
 2018-02-01   1000       1
 2018-02-01   1001       1

可能 groupby 的想法是一个死亡的结局。非常感谢您的帮助。

标签: pythonpandasindexingmulti-index

解决方案


GroupBy.ngroup与 一起使用Series.map,只有必要的默认索引在df_value

df['new'] = df.groupby('date').ngroup().map(df_value['value'])

推荐阅读