1

我有一个 DataFrame,其中包含一个名为 _ItemId 的索引和一个 _ChannelId 列,以及下面简化为 _SomeValue 的其他值列。我想将 DataFrame 转换为每个 _Channel 模态具有完全相同的 _ItemId 元素(我将其称为“平衡”,就像在面板数据中一样)。

在下面的示例中,在我想要的 df 中,插入了 3 行,其中包含 Nan 值以平衡 DataFrame。

我以为我会使用 reindex() 函数,但我不确定如何创建插入缺失元素所需的索引。任何建议都非常感谢。

我有的:

       _ChannelId  _SomeValue
_ItemId                 
6559085   MICRO    AA
6589413   MICRO    AB
6589421   MICRO    AA
6781144   MICRO    AC
8184089   MICRO    AA
6559085  WILSON    AA
6589413  WILSON    AC

我想要的是:

       _ChannelId  _SomeValue
_ItemId                 
6559085   MICRO    AA
6589413   MICRO    AB
6589421   MICRO    AA
6781144   MICRO    AC
8184089   MICRO    AA
6559085  WILSON    AA
6589413  WILSON    AC
6589421  WILSON    NaN
6781144  WILSON    NaN
8184089  WILSON    NaN

谢谢

4

1 回答 1

1

首先获取要作为参考的组的索引,例如:

idx = df.groupby('_ChannelId').groups['MICRO']

可能是您想要联合,唯一索引,第一组的索引等,问题中没有明确指定。然后你可以这样做:

df.groupby('_ChannelId')\
  .apply(lambda x: x.reindex(idx))\
  .drop('_ChannelId', axis=1)\
  .reset_index('_ChannelId')

        _ChannelId  _SomeValue
_ItemId     
6559085 MICRO      AA
6589413 MICRO      AB
6589421 MICRO      AA
6781144 MICRO      AC
8184089 MICRO      AA
6559085 WILSON     AA
6589413 WILSON     AC
6589421 WILSON     NaN
6781144 WILSON     NaN
8184089 WILSON     NaN
于 2014-12-09T16:57:22.133 回答