【问题标题】:Pandas dataframe.set_index() deletes previous index and columnPandas dataframe.set_index() 删除以前的索引和列
【发布时间】:2018-07-17 04:26:45
【问题描述】:

我刚刚在 Pandas DataFrames 中遇到了一个奇怪的现象,当使用 DataFrame.set_index('some_index') 设置索引时,原来也是索引的列被删除了!这是一个例子:

import pandas as pd
df = pd.DataFrame({'month': [1, 4, 7, 10],'year': [2012, 2014, 2013, 2014],'sale':[55, 40, 84, 31]})
df_mn=df.set_index('month')
>>> df_mn
       sale  year
month            
1        55  2012
4        40  2014
7        84  2013
10       31  2014

现在我将索引更改为年份:

df_mn.set_index('year')
      sale
year      
2012    55
2014    40
2013    84
2014    31

.. 并且月份列与索引一起被删除。这很烦人,因为我只是想交换 DataFrame 索引。

有没有办法不删除作为索引的上一列?也许通过类似:DataFrame.set_index('new_index',delete_previous_index=False)

感谢您的建议

【问题讨论】:

标签: python pandas dataframe indexing


【解决方案1】:

您可以执行以下操作

>>> df_mn.reset_index().set_index('year')
      month  sale
year             
2012      1    55
2014      4    40
2013      7    84
2014     10    31

【讨论】:

    【解决方案2】:

    不,在这种情况下,您必须保存上一列,如图所示 下面:

    import pandas as pd
    df = pd.DataFrame({'month': [1, 4, 7, 10],'year': [2012, 2014, 2013, 2014],'sale':[55, 40, 84, 31]})
    df_mn=df.set_index('month')
    df_mn['month'] = df_mn.index #Save it as another column, and then run set_index with year column as value.
    df_mn.set_index('year')
    

    除了您使用的是重复的数据框 df_mn ,因此数据框 df 保持不变,您可以再次使用它。 如果你没有设置

    inplace 参数将 set_index 设置为 True

    df_mn 即使在你调用 set_index() 之后也不会改变。

    此外,与其他答案一样,您始终可以使用 reset_index()。

    【讨论】:

    • 除了凯的回答,我不确定你在暗示什么。你能解释一下吗?
    • 我只是想建议您在使用 inplace 参数 true 执行 set_index 之后基本上可以保存索引列。但是,最好的方法是使用 reset_index,除了就像我建议的那样,您的 df 列不受影响,所以月份数据毕竟不会丢失。
    【解决方案3】:

    我发现保留先前列的解决方案是设置 drop=False dataframe.set_index('some_column',drop=False)。这不是完美的答案,但它有效!

    【讨论】:

    • 我认为这可以防止 year 列在您 set_index(year) 时在 DF 中消失。如果 month 已被用作索引,它不会恢复它。 Kay Wittig 的答案是最好的——reset_index()
    猜你喜欢
    • 2018-09-18
    • 2013-09-08
    • 1970-01-01
    • 2019-01-16
    • 2021-04-15
    • 2013-12-05
    • 2021-11-24
    • 2014-09-27
    相关资源
    最近更新 更多