我有一个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谢谢
发布于 2014-12-09 16:57:22
首先获取要作为引用的组的索引,例如:
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 NaNhttps://stackoverflow.com/questions/27383773
复制相似问题