HappyPy
HappyPy

Reputation: 10697

How to add rows into existing dataframe in pandas? - python

df = pd.DataFrame({'a':[1,2,3,4],'b':[5,6,7,8],'c':[9,10,11,12]})

How can I insert a new row of zeros at index 0 in one single line? I tried pd.concat([pd.DataFrame([[0,0,0]]),df) but it did not work.

The desired output:

    a   b   c
0   0   0   0
1   1   5   9
2   2   6   10
3   3   7   11
4   4   8   12

Upvotes: 2

Views: 1104

Answers (3)

piRSquared
piRSquared

Reputation: 294546

An answer more specific to the dataframe being prepended to

pd.concat([df.iloc[[0], :] * 0, df]).reset_index(drop=True)

Upvotes: 1

MaxU - stand with Ukraine
MaxU - stand with Ukraine

Reputation: 210982

alternatively to EdChum's solution you can do this:

In [163]: pd.DataFrame([[0,0,0]], columns=df.columns).append(df, ignore_index=True)
Out[163]:
   a  b   c
0  0  0   0
1  1  5   9
2  2  6  10
3  3  7  11
4  4  8  12

Upvotes: 2

EdChum
EdChum

Reputation: 394459

You can concat the temp df with the original df but you need to pass the same column names so that it aligns in the concatenated df, additionally to get the index as you desire call reset_index with drop=True param.

In [87]:
pd.concat([pd.DataFrame([[0,0,0]], columns=df.columns),df]).reset_index(drop=True)

Out[87]:
   a  b   c
0  0  0   0
1  1  5   9
2  2  6  10
3  3  7  11
4  4  8  12

Upvotes: 3

Related Questions