2015-10-15 304 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文件,新行不会被添加。我决定使用Python外壳检查:

>>>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) 

它插入在数据帧dfnew栏(与所有值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) 

另外,您应该确保在尝试调用函数之前先定义该函数。