我有一个包含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!
答案 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()