Signup/Sign In
Ask Question
Not satisfied by the Answer? Still looking for a better solution?

Create pandas Dataframe by appending one row at a time

I understand that pandas is designed to load fully populated DataFrame but I need to create an empty DataFrame then add rows, one by one.

I successfully created an empty DataFrame with :

res = DataFrame(columns=('lib', 'qty1', 'qty2'))

Then I can add a new row and fill a field with :

res = res.set_value(len(res), 'qty1', 10.0)

It works but seems very odd :-/ (it fails for adding string value)

How can I add a new row to my DataFrame (with different columns type) ?
by

2 Answers

kshitijrana14
You can use df.loc[i], where the row with index i will be what you specify it to be in the dataframe.

>>> import pandas as pd
>>> from numpy.random import randint
>>> df = pd.DataFrame(columns=['lib', 'qty1', 'qty2'])
>>> for i in range(5):
>>> df.loc[i] = ['name' + str(i)] + list(randint(10, size=2))
>>> df
lib qty1 qty2
0 name0 3 3
1 name1 2 4
2 name2 2 8
3 name3 2 1
4 name4 9 6
sandhya6gczb
It is always cheaper/faster to append to a list and create a DataFrame in one go. Here is a program to append a data frame.

data = []
for a, b, c in some_function_that_yields_data():
data.append([a, b, c])

df = pd.DataFrame(data, columns=['A', 'B', 'C'])

Login / Signup to Answer the Question.