我有一个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
由于
答案 0 :(得分: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