How to append a list to dataframe without using column names?

10,197

Solution 1

You can do something like

df.loc[len(df)] = [1, 2, 3, 4]

Solution 2

if you will be adding more than one row, you should use the concat function. Which will require you to add the new data in a DataFrame first.

df3 = pd.concat([df1, df2], ignore_index=True)

Read more in the docs here.

Share:
10,197
Rahul Rai
Author by

Rahul Rai

Updated on June 25, 2022

Comments

  • Rahul Rai
    Rahul Rai almost 2 years

    I want to append a list of four prices [1, 2, 3, 4] to an already existing dataframe using the DataFrame.append(), the already existing dataframe has four columns.

    Using this

    dataframe = pd.DataFrame(columns=["open", "high", "low", "close"],
                             data = [[1, 2, 3, 4]])
    

    Creates the dataframe

       open  high  low  close
    0     1     2    3      4
    

    Then I want to append some lists like this:

    dataframe = dataframe.append([[5, 6, 7, 8]],
                                 ignore_index =True)
    

    Gives the output

       open  high  low  close    0    1    2    3
    0   1.0   2.0  3.0    4.0  NaN  NaN  NaN  NaN
    1   NaN   NaN  NaN    NaN  5.0  6.0  7.0  8.0
    

    While I want the list to be appended in continuation to the dataframe, is there a way to do this without using the column names, only the list of four prices?

  • Slayer
    Slayer about 5 years
    I think OP wants to append a list to a dataframe. Here pd.concat will concatenate two dataframes.
  • mostafazh
    mostafazh about 5 years
    @Prerit I know, I also saw that he said "then I want to append some lists like this", keyword lists.
  • Slayer
    Slayer about 5 years
    Yea, totally missed the "some" word. My bad. He need to convert the list of list to a dataframe and concatenate.
  • Mohd
    Mohd almost 4 years
    How about if the added row is not complete, df.loc[len(df)] = [1, 2, 3] , which would result in size mismatch?
  • Christian Vincenzo Traina
    Christian Vincenzo Traina almost 3 years
    The output is like the OP one