sudonym sudonym - 7 days ago 6
Python Question

How to add a string to every even row in a pandas dataframe column series?

I am new to pandas.

I want to add a new column to a pandas dataframe

df
and assign "Start" to every odd row and "Stop" to every even row.

However, when I do
df.iloc[1::2, :] = "Start"
, I am inserting a new row at every 2nd position with the "Start" string in every column.

I know that in this case, pandas doesn't know in which column to put the "Start"-string.

However, I couldn't figure out the correct syntax.

Answer

Here's my solution - Haven't figured out the optimization part but given a fairly large dataset this should handle it quite well -

import pandas as pd

df = pd.read_csv('temp.csv')

df['New_Col'] = "Start"

df.loc[1::2,"New_Col"] = "Stop"

print df['New_Col']

Output -

0      Start
1       Stop
2      Start
3       Stop
4      Start
5       Stop
6      Start
7       Stop
8      Start
9       Stop
10     Start
11      Stop
12     Start
13      Stop
14     Start
15      Stop
16     Start
17      Stop
18     Start
19      Stop
20     Start
21      Stop
22     Start
23      Stop
24     Start
25      Stop
26     Start
27      Stop
28     Start
29      Stop
       ...  
116    Start
117     Stop
118    Start
119     Stop
120    Start
121     Stop
122    Start
123     Stop
124    Start
125     Stop
126    Start
127     Stop
128    Start
129     Stop
130    Start
131     Stop
132    Start
133     Stop
134    Start
135     Stop
136    Start
137     Stop
138    Start
139     Stop
140    Start
141     Stop
142    Start
143     Stop
144    Start
145     Stop
Name: New_Col, dtype: object
Comments