【问题标题】:Pandas set_index doesn't drop the columnPandas set_index 不会删除该列
【发布时间】:2018-07-31 02:09:29
【问题描述】:

我在我的数据框上运行以下代码函数:

del dfname["Unnamed: 0"]
dfname["date"] = pd.to_datetime(dfname["date"])
dfname.set_index(dfname["date"], drop=True, inplace=True)

但是列不掉(我知道默认是drop=True

The output dataframe looks like this。我正在使用 Python 3.6

【问题讨论】:

  • .set_index() 想要实际的列 name,所以是 'date',而不是 dfname["date"]

标签: python pandas csv import


【解决方案1】:

将DataFrame的column改为column name,drop = True也是默认的,所以可以删除它:

dfname.set_index(dfname["date"], drop = True, inplace = True)

到:

dfname.set_index("date", inplace = True)

示例

rng = pd.date_range('2017-04-03', periods=10)
dfname = pd.DataFrame({'date': rng, 'a': range(10)})  

dfname.set_index("date", inplace = True)
print (dfname)
            a
date         
2017-04-03  0
2017-04-04  1
2017-04-05  2
2017-04-06  3
2017-04-07  4
2017-04-08  5
2017-04-09  6
2017-04-10  7
2017-04-11  8
2017-04-12  9

编辑:

如果输入是文件,使用read_csv 和参数index_colparse_datesDatetimeIndex

df = pd.read_csv(file, index_col=['date'], parse_dates=['date'])

【讨论】:

  • 太棒了!只是列名做到了!谢谢!
  • @jezrael,我今天遇到了这个。还没有注意到。如果我使用df.set_index(df["col_1"]),这不会删除列,因为默认情况下删除参数设置为 True。如果我执行了以下df.set_index("col_1"),那么它会删除列“col_1”。这是什么行为?
猜你喜欢
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 2016-10-01
  • 2018-04-25
  • 1970-01-01
  • 2020-11-02
相关资源
最近更新 更多