2013-11-20 164 views
40

我有下面的代碼,它導入一個CSV文件。有3列,我想設置他們的前兩個變量。當我將第二列設置爲變量「效率」時,索引列也被加上了。我如何擺脫索引列?刪除熊貓中的索引列

df = pd.DataFrame.from_csv('Efficiency_Data.csv', header=0, parse_dates=False) 
energy = df.index 
efficiency = df.Efficiency 
print efficiency 

我嘗試使用

del df['index'] 

我設置

energy = df.index 

我在另一篇文章後發現,但導致 「KeyError異常: '索引'」

回答

27

DataFrames和Series始終有一個索引。儘管它顯示在列的旁邊,但它不是列,這就是爲什麼del df ['index']不起作用的原因。

如果要用簡單的連續數字替換索引,請使用df.reset_index()。我強烈建議閱讀一些熊貓文檔,比如10 minutes to Pandas,以瞭解索引爲什麼存在的原因。

+0

謝謝!我決定只用一種不使用熊貓的方式導入它。我必須在每個列上執行一些算術運算,並且python不喜歡附加索引列。熊貓當然是導入數據的最簡單方式,但並不總是我發現的最好的方式。 –

+0

您是否嘗試使用熊貓來進行算術? –

+0

可以刪除索引名嗎? – Quant

0

可以通過使用from_csv函數的index_col參數指定您的csv文件中哪一列是索引如果if_csv函數爲 if這並不能解決您的問題,請提供您的數據示例

1

如果您的問題與我只想將列標題從0重置爲列大小的問題相同。做

df = pd.DataFrame(df.values); 

編輯:

若您對異構數據類型是個好主意。更好的只是使用

df.columns = range(len(df.columns)) 
73

當從中讀取CSV文件包括參數索引,以便例如

df.to_csv(filename , index = False) 

,並從CSV讀

df.read_csv(filename , index = False) 

這應該防止=假這個問題,所以你不需要以後修復它。

+2

非常感謝。這正是問題所在。 –

+0

「header = False」用於以相同方式刪除標題 –

+0

寫入json時如何? – pyd

4

例如,您可以將其中一列設置爲索引以防其爲「id」。 在這種情況下,索引列將替換爲您選擇的其中一列。

df.set_index('id', inplace=True) 
0

df.reset_index(降=真,就地= TRUE)