adrCoder
adrCoder

Reputation: 3275

Python - dataframe insert error "TypeError: insert() missing 1 required positional argument: 'value'"

I am trying to insert a row in the following dataframe:

import pandas as pd
earnings_dates_returns = pd.DataFrame(columns=['Stock_name','Announcement_date'])
earnings_dates_returns.insert(0, {'Stock_name': 'Apple', 'Announcement_date': '2010-01-01'})                                    

but I am getting this error:

TypeError: insert() missing 1 required positional argument: 'value'

Why do I get it? How can I fix it?

Upvotes: 4

Views: 5774

Answers (1)

jezrael
jezrael

Reputation: 862511

Use DataFrame.append with Series if is necessary specify index value.

If need append in loop it is possible, but slow:

earnings_dates_returns = pd.DataFrame(columns=['Stock_name','Announcement_date'])
s = pd.Series({'Stock_name': 'Apple', 'Announcement_date': '2010-01-01'}, name=0)
earnings_dates_returns = earnings_dates_returns.append(s)
print (earnings_dates_returns)
  Stock_name Announcement_date
0      Apple        2010-01-01

s = pd.Series({'Stock_name': 'Pear', 'Announcement_date': '2011-01-01'}, name=5)
earnings_dates_returns = earnings_dates_returns.append(s)
print (earnings_dates_returns)
  Stock_name Announcement_date
0      Apple        2010-01-01
5       Pear        2011-01-01

Does it work if I add more than one rows in the dataframe?

I think better is create list of dicts or Series first and then create DataFrame for improve performance:

out = []
for data in iterator:
    #some processing if necessary
    out.append(data)

df = pd.DataFrame(out)

Upvotes: 2

Related Questions