Home > database >  Pandas not appending after first column
Pandas not appending after first column

Time:01-17

I have two dataframes. One contains a column that contains the date of earnings for a stock. The other contains the all the prices for the stock, keep in mind that the index is the date. I want to get the prices of a stock N days before and after earnings and store it in a new dataframe column wise. This is what I have so far

earningsPrices = pd.DataFrame()
for date in dates:
    earningsPrices[date] = prices[date - pd.Timedelta(days=N):date   pd.Timedelta(days=N)]
print(earningsPrices)

and this is the output enter image description here The problem is that it only writes the prices for the first date, and not the rest.

CodePudding user response:

You should maybe take this approach:

earningsPrices = pd.DataFrame(index=dates, columns=['price1', 'price2', 'price3'])

for date in dates:
    start_date = date - pd.Timedelta(days=N)
    end_date = date   pd.Timedelta(days=N)

    selected_rows = prices.loc[prices['date_column'].between(start_date, end_date)]

    earningsPrices.loc[date, 'price1'] = selected_rows['price1'].values
    earningsPrices.loc[date, 'price2'] = selected_rows['price2'].values
    earningsPrices.loc[date, 'price3'] = selected_rows['price3'].values

print(earningsPrices)

CodePudding user response:

use concat

for date in dates:
    earningsPeriod = prices[date - pd.Timedelta(days=window):date   pd.Timedelta(days=window)].reset_index(drop=True)
    earningsPrices = pd.concat([earningsPrices, earningsPeriod], axis=1)
  • Related