我有一个包含不完整行的大表,我想将它们合并在一起。
应该成为:
我设法使用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)
有些列无法处理,例如电子邮件。
答案 0 :(得分:3)
在测试了很多不同的方法之后,最简单的方法是最好的解决方案(一如既往)和最长的方法。感谢@maxymoo指出它。
outputframe.groupby(['somecol','someothercol'],as_index=False).max()
这将保留列而不创建索引。