У меня есть фрейм данных, который выглядит примерно так:
Date Account Symbol Name Transaction type
0 2020-06-24 Vanguard Brokerage VSGAX VANGUARD SMALL CAP GROWTH INDEX ADMIRAL CL Dividend
1 2020-06-24 Vanguard Brokerage VSGAX VANGUARD SMALL CAP GROWTH INDEX ADMIRAL CL Reinvestment
2 2020-06-24 Vanguard Brokerage VTSAX VANGUARD TOTAL STOCK MARKET INDEX ADMIRAL C Dividend
3 2020-06-24 Vanguard Brokerage VTSAX VANGUARD TOTAL STOCK MARKET INDEX ADMIRAL Reinvestment
4 2020-06-19 Vanguard Brokerage VHYAX VANGUARD HIGH DIVIDEND YIELD INDEX ADMIRAL Dividend
5 2020-06-19 Vanguard Brokerage VHYAX VANGUARD HIGH DIVIDEND YIELD INDEX ADMIRAL Reinvestment
7 2020-06-16 Vanguard Brokerage VHYAX VANGUARD HIGH DIVIDEND YIELD INDEX ADMIRAL Buy
8 2020-06-16 Vanguard Brokerage VSGAX VANGUARD SMALL CAP GROWTH INDEX ADMIRAL CL Buy
9 2020-06-16 Vanguard Brokerage VTSAX VANGUARD TOTAL STOCK MARKET INDEX ADMIRAL C Buy
Я хотел бы извлечь самую раннюю дату для каждого символа, который имеет тип транзакции «покупка», и поместить эту информацию в словарь. Я не уверен, что лучше использовать .groupby, или более подходит for-l oop.
В настоящее время я пытаюсь использовать al oop для перебора всех столбцы, вытащите все транзакции, равные «Купить». После этого я пытался выяснить, как извлечь минимальную дату из этого нового набора данных и поместить ее в словарь. Вот что у меня сейчас есть.
excel_file_1 = 'Stock.Activity.xlsm'
#Putting excel files into dataframes
df_vang_brok = pd.read_excel(excel_file_1, sheet_name = 'Vanguard.Brokerage',
index=False)
df_vang_ira = pd.read_excel(excel_file_1, sheet_name = 'Vanguard.IRA',
index=False)
df_schwab_brok = pd.read_excel(excel_file_1, sheet_name = 'Schwab.Brokerage',
index=False)
#Combining data frames into one
df_all = pd.concat([df_vang_brok, df_vang_ira, df_schwab_brok])
df_early={}
for index,row in df_all.iterrows():
if row['Transaction type'] == 'Buy':
print(row['Date'],row['Symbol'],row['Amount'])
df_early = {'Date': row['Date'], 'Symbol': row['Symbol'],
'Amount': row['Amount']}
print(df_early)
Я получаю результат:
2017-07-17 00:00:00 VSGAX -678.93
2017-07-05 00:00:00 VTSAX -1915.76
2017-07-03 00:00:00 VTYAX -3022.93
{'Date': Timestamp('2017-07-03 00:00:00'), 'Symbol': 'VTYAX', 'Amount': -3022.93}
Он успешно извлекает все транзакции с «покупкой» из фрейма данных, но как мне вытащить самые ранние дату после этого и поместите его в мой df_early dataframe?
Это даже лучший / самый эффективный способ go об этом?
Спасибо!