【发布时间】: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)
感谢您的建议
【问题讨论】:
-
首先使用
df_mn.reset_index(),它将重新存储数据框中的月份列。然后使用set_index。 -
此问题下的答案:python - Pandas - Dataframe.set_index - how to keep the old index column 建议使用参数
append=True到set_index()。 -
@PaulRougieux 你知道为什么 df.set_index sometimes 会删除现有索引,但并非总是如此吗?
标签: python pandas dataframe indexing