Pandas - 在Groupby之后恢复索引

时间:2016-01-26 17:30:11

标签: csv pandas

我有一个包含不完整行的大表,我想将它们合并在一起。

  • A B C
  • A B C D
  • A B

应该成为:

  • A B C D

我设法使用groupby.max():

outputframe = outputframe.groupby(['somecol','someothercol']).max()

最后,我将所有这些内容写入没有索引的csv。所以,我想我需要将somecol和someothercol转换回常规列。我尝试使用reset_index,但结果是格式错误(列的顺序很奇怪)。

我是否可以执行上述行并将somecol和someothercol保持原样/将其恢复到原始状态?

我的csv导出看起来像这样,我可能无法改变:

outputframe.to_csv(path_or_buf=outputfilename, sep=';', na_rep='', index=False, encoding='utf-8')

是唯一的方式

outputframe.reset_index(level=0, inplace=True)

然后找到一种方法来改变列的顺序?

我还发现了Multiindex pandas groupby + aggregate, keep full index,其中提供了解决方案:

s[s.groupby(level=0).transform(lambda x: x == x.max()).astype(bool)]

然而,这并没有成功:未来警告:numpy equal将来不会检查对象身份。比较没有返回与身份(is))建议相同的结果,并且会发生变化。   result = func(values,other)

有些列无法处理,例如电子邮件。

1 个答案:

答案 0 :(得分:3)

在测试了很多不同的方法之后,最简单的方法是最好的解决方案(一如既往)和最长的方法。感谢@maxymoo指出它。

outputframe.groupby(['somecol','someothercol'],as_index=False).max()

这将保留列而不创建索引。