首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用reindex实现DataFrame平衡

使用reindex实现DataFrame平衡
EN

Stack Overflow用户
提问于 2014-12-09 16:20:19
回答 1查看 449关注 0票数 1

我有一个DataFrame,它有一个名为_ItemId的索引和一个_ChannelId列,加上下面简化为_SomeValue的其他值列。我希望将DataFrame转换为每个_Channel模式都有完全相同的_ItemId元素(我称之为“平衡”,就像面板数据中的那样)。

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

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

我所拥有的:

代码语言:javascript
复制
       _ChannelId  _SomeValue
_ItemId                 
6559085   MICRO    AA
6589413   MICRO    AB
6589421   MICRO    AA
6781144   MICRO    AC
8184089   MICRO    AA
6559085  WILSON    AA
6589413  WILSON    AC

我想要的:

代码语言:javascript
复制
       _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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-09 16:57:22

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

代码语言:javascript
复制
idx = df.groupby('_ChannelId').groups['MICRO']

可能是您想要的联盟、唯一的索引、第一组的索引等等,它在问题中没有明确规定。然后你就可以:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27383773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档