python熊猫插入列


问题内容

我正在编写代码以在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 shell进行检查:

>>>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 shell,我只能在shell上看到更新的结果。我也该如何在CSV文件中更新它?


问题答案:

当你做-

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

它将new列插入到df内存中的DataFrame中(所有值均为1000)。它不会自动将其写回到csv。

对于对数据帧所做的更改以将其写回到csv,应使用DataFrame.to_csv()method。范例-

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)

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