Reputation: 3275
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
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