Pandas set_index不会删除列

时间:2018-02-20 16:32:05

标签: python pandas csv import

我导入了几个csv文件并运行此函数:

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

但是该列不会掉线(我知道drop的默认值为True)

Output looks like this

非常感谢帮助! 问候

(Python 3.6)

1 个答案:

答案 0 :(得分:5)

将DataFrame的列更改为列名,默认情况下也为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

编辑:

如果输入是文件,请对index_col使用read_csv参数parse_datesDatetimeIndex

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