【问题标题】:reset_index() to original column indices after pandas groupby()?pandas groupby()之后将reset_index()重置为原始列索引?
【发布时间】:2016-05-03 09:12:14
【问题描述】:

我生成了一个分组数据框df = df.groupby(['X','Y']).max(),然后我想将其写入(到 csv,没有索引)。所以我需要将“X”和“Y”转换回常规列;我尝试使用reset_index(),但列的顺序是错误的。

如何将 'X' 和 'Y' 列恢复到它们的原始列位置?

解决办法是:

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

然后想办法改变列的顺序?


(我也找到了this approach, for multiindex

【问题讨论】:

  • FutureWarning 是否来自lambda x: x == x.max()?如果需要做身份检查,想必可以使用lambda x: x is x.max()
  • 这行得通吗? outputframe.groupby(['somecol','someothercol'],as_index=False).max()
  • 我完全不明白你的问题。是否要通过丢弃行从列中删除 NaN 值?还是要将这些行合并为一行?
  • @Kartik 表中存在不完整行的半重复项。如果两行在几个指定的列中匹配,则它们被视为重复。然后,我希望将这两行合并为一行,同时保留/合并尽可能多的信息。在很多情况下,其中一行有一个字符串值,另一列是 nan,然后我希望字符串值出现在合并的行中。
  • 我也完全不明白你的问题,我看不出'somecol','someothercol'来自哪里。鉴于第一部分(合并多行)已解决且不是问题,请删除对它的所有引用并在第 1 行向我们展示 'somecol','someothercol'。或者您需要将其设为MCVE 的任何起点。否则其他人无法理解或重复使用此问题。

标签: python pandas csv pandas-groupby indices


【解决方案1】:

此解决方案在分组后保持列不变并且不创建索引,因此我们不需要reset_index() 和最后的列重新排序:

df.groupby(['X','Y'],as_index=False).max()

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

【讨论】:

    猜你喜欢
    • 2019-01-06
    • 2020-05-18
    • 1970-01-01
    • 2018-08-19
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 2021-04-15
    相关资源
    最近更新 更多