![](/img/trans.png)
[英]Make Pandas Dataframe column equal to value in another Dataframe based on index
[英]Locating minimum date based on column equal to specific value in pandas dataframe?
我有一個看起來像這樣的 dataframe:
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 循環是否更合適。
我目前一直在嘗試使用循環來遍歷所有列,取出所有等於“購買”的交易。 在那之后,我一直試圖弄清楚如何從新數據集中提取最小日期並將其放入字典中。 這是我目前擁有的。
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)
我得到 output:
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}
它成功地從 dataframe 中提取了所有帶有“購買”的交易,但是我如何在此之后提取最早的日期並將其放入我的 df_early dataframe 中?
這甚至是 go 的最佳/最有效方法嗎?
謝謝!
像這樣的東西?
df.loc[df['Transaction type'] == 'Buy'].groupby('symbol')['date'].min()
第一部分(tofer.groupby())選擇“交易類型”為“買入”的所有行,然后您將Z6A8064B5DF479455555555555555555557DZ組成“符號”,Z99938282582F04040404071859941E8F18F18F116列表和Min.16 colly.16 colly.16 colly and sigrt。 如果您還想要所有其他列,則可以將上述內容放在單獨的 df.loc[] 中。
我還在學習,所以也許我錯了,很難嘗試這些東西,但我會玩一下:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.