2015-10-15 17 views
1

Я пишу код, чтобы вставить новый столбец в файле CSV:питона панды вставить столбец

import sys,os,csv,glob 
dir = os.path.dirname(__file__) 

import pandas as pd 

updatecsv() 

def updatecsv(): 

    files = 'example.cs' 
    df = pd.read_csv(files) 
    df = df.convert_objects(convert_numeric=True) 
    #until here, the code is running fine 
    #now i wanted to add a new column in a specific index with all value =10   
    df.insert(2,'new',1000) 

Когда я запускаю код, не было дано никакой ошибки. Когда я открываю файл csv, новая строка не добавляется. Я решил проверить с помощью питона оболочки:

>>>files = 'example.csv' 
>>>df = pd.read_csv(files) 
>>>df = df.convert_objects(convert_numeric=True) 
>>>df 
    A B C D 
0 1 2 3 4 
1 5 6 7 8 
2 9 10 11 12 
df['new']=13 
>>>df 
    A B C D new 
0 1 2 3 4 13 
1 5 6 7 8 13 
2 9 10 11 12 13 
>>>df['new'] = df['new'] +1 
>>>df 
    A B C D new 
0 1 2 3 4 14 
1 5 6 7 8 14 
2 9 10 11 12 14 
>>>df.insert(2,'win',22) 
>>>df 
    A B win C D new 
0 1 2 22 3 4 14 
1 5 6 22 7 8 14 
2 9 10 22 11 12 14 

Использование оболочки Python, я могу видеть результат обновляется только на оболочке. Как обновить его в CSV-файле?

ответ

3

Когда вы делаете -

df.insert(2,'new',1000) 

Он вставляет new колонку в DataFrame df (со всеми значениями 1000) в памяти. Он автоматически не записывает его обратно в csv.

Для внесения изменений, внесенных в кадр данных, который будет записан обратно в csv, вы должны использовать метод DataFrame.to_csv(). Пример:

def updatecsv(): 
    files = 'example.cs' 
    df = pd.read_csv(files) 
    df = df.convert_objects(convert_numeric=True) 
    #until here, the code is running fine 
    #now i wanted to add a new column in a specific index with all value =10   
    df.insert(2,'new',1000) 
    df.to_csv(files) 

Кроме того, вы должны убедиться, что задаете функцию, прежде чем пытаться ее вызвать.