如何为“ multi-groupbyed”数据帧重新编制索引?

时间:2019-05-08 13:32:29

标签: python pandas dataframe

我有一个包含4列的数据框,前3列是数字变量,指示最后一列的变量特征,最后一列是字符串。

我想通过groupby函数将最后一个字符串列与前3个列合并。然后就可以了(我的意思是与前三列记录的具有相同功能的字符串已成功合并)

以前,数据帧的长度为1200,而合并数据帧的长度为1100。我发现后面的df是多重的。它仅包含2列。(分层索引)因此,我尝试通过生成的升序数字列表尝试reindex方法。可悲的是我失败了。

df1.columns
*[Out]Index(['time', 'column','author', 'text'], dtype='object')
series = df1.groupby(['time', 'column','author'])
['body_text'].sum()#merge the last column by the first 3 columns
dfx = series.to_frame()# get the new df
dfx.columns
*[Out]Index(['author', 'text'], dtype='object')
len(dfx)
*[Out]1100
indexs = list(range(1100))
dfx.reindex(index = indexs)
*[Out]Exception: cannot handle a non-unique multi-index!

1 个答案:

答案 0 :(得分:1)

Reindex不是必需的,最好使用DataFrame.reset_index或将参数as_index=False添加到DataFrame.groupby

 dfx = df1.groupby(['time', 'column','author'])['body_text'].sum().reset_index()

或者:

 dfx = df1.groupby(['time', 'column','author'], as_index=False)['body_text'].sum()