Explore Courses Blog Tutorials Interview Questions
0 votes
in Data Science by (17.6k points)

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. What is the best way to do this ?

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) ?

1 Answer

0 votes
by (41.4k points)

.loc is referencing the index column, so, while working with a pre-existing DataFrame with an index that isn't a continuous sequence of integers starting with 0 (as in your example), .loc will overwrite existing rows, or insert rows, or create gaps in your index

>>> 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

Related questions

Browse Categories