如何将pandas dataframe subset index重置为default

时间:2018-04-26 13:31:36

标签: python pandas

我有这个示例代码

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

产生:

       sale  year
month            
1        55  2012
7        84  2013

但我需要

  month  sale  year
0      1    55  2012
2      7    84  2013

我将索引重置为默认索引。有没有办法改变print语句来实现这个目标?

谢谢

2 个答案:

答案 0 :(得分:2)

使用df.reset_index()获取信息阅读docs

检查一下:

import pandas as pd

df = pd.DataFrame({'month': [1, 4, 7, 10],
               'year': [2012, 2014, 2013, 2014],
               'sale':[55, 40, 84, 31]})
df.set_index('month', inplace=True) # here you are setting index inplace 
print(df[( df['sale'] > 40)])

df.reset_index(inplace=True)  # here i reset it inplace

print(df[( df['sale'] > 40)]) #updated df

它会为您提供如下输出:

   month  sale  year
0      1    55  2012
2      7    84  2013

作为您想要的输出!

希望这会对你有所帮助! :)

答案 1 :(得分:2)

只需取出df.set_index('month', inplace=True)行:

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

print(df[( df['sale'] > 40)])

#    month  sale  year
# 0      1    55  2012
# 2      7    84  2013

该行明确地将索引设置为您不想要的month列。您可以设置它,然后根据@Addullah Ahmed Ghaznavi的建议使用df.reset_index()取消设置,但这似乎是不必要的工作,除非您无法控制数据帧的创建

注意:如果您的问题建议只想更改打印输出(保持原始数据框完全不变),则可以使用此print语句与您的原始流程:

print(df[( df['sale'] > 40)].reset_index())