Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python pandas insert column

Tags:

python

pandas

csv

I am writing code to insert a new column in a csv file:

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)

When I run the code, no error was given. When I open the csv file, the new row is not added. I decided to check using 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

Using the python shell, I can see the result updated on the shell only. How do I update it in the CSV file as well?

like image 850
Hari Avatar asked Oct 15 '15 03:10

Hari


People also ask

How do you add a column to a specific position in Python?

To add a column at a specific position within a table row, use FIRST or AFTER col_name . The default is to add the column last. You can also use FIRST and AFTER in CHANGE or MODIFY operations to reorder columns within a table.

How do I add a column to a string in pandas?

By use + operator simply you can concatenate two or multiple text/string columns in pandas DataFrame. Note that when you apply + operator on numeric columns it actually does addition instead of concatenation.


1 Answers

When you do -

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

It inserts the new column in the DataFrame df (with all values 1000) in memory. It does not automatically write it back to the csv.

For changes you did to the dataframe to be written back to csv, you should use DataFrame.to_csv() method. Example -

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)

Also, you should make sure you define the function before you try to call it.

like image 160
Anand S Kumar Avatar answered Nov 03 '22 02:11

Anand S Kumar