![](/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.