2

(I´m new to python, sorry for any mistakes I make, I hope you can understand me)

I have searched for a method to insert a Row into a Pandas DataFrame in Python, and I have found this:

add one row in a pandas.DataFrame

I have use the code provided in the accepted answer of that topic by fred, but the code overwrites my row: My code (Inserts a row with values "-1" for each column in certains conditions):

df.loc[i+1] = [-1 for n in range(len(df.columns))]

How can I make the code insert a row WITHOUT overriding it? For example, if I have a 50 row DataFrame, insert a row in position 25 (Just as an example), and make the DataFrame have 51 rows (Being the 25 a extra NEW row).

I hope you can understand my question. (Sorry for any english mistakes)

Thank you.

UPDATE:

Someone suggested this:

Is it possible to insert a row at an arbitrary position in a dataframe using pandas?

Tried, did not work. In fact, it does nothing, does not add any row.

 line = pd.DataFrame({[-1 for n in range(len(df.columns))]}, index=[i+1])
 df = pd.concat([ df.ix[:i],  line,  df.ix[i+1:]]).reset_index(drop=True)

Any other ideas?

2

1 Answer 1

3

With a small DataFrame, if you want to insert a line, at position 1:

df = pd.DataFrame({'a':[0,1],'b':[2,3]})

df1 = pd.DataFrame([4,5]).T  

pd.concat([df[:1], df1.rename(columns=dict(zip(df1.columns,df.columns))), df[1:]])

#Out[46]: 
#   a  b
#0  0  2
#0  4  5
#1  1  3
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.