如何在一定条件下只得到数据帧的第二个索引

2024-06-01 20:35:18 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我对python还很陌生,所以请对我放轻松。
我需要从数据帧中得到一个特定的值。你知道吗

我得到了这个密码:
第一次输入的数据帧:

symbol   date          bmo amc             company name
AAP 2019-05-22 Before The Open Advance Auto ADI 2019-05-22 Before The Open Analog Devices CM 2019-05-22 Before The Open CIBC CSWI 2019-05-22 Before The Open CSW Industrials KLXE 2019-05-22 Before The Open KLX Energy Services
for stock_symbol in mystocks:
    print(stock_symbol)

输入:

#get the date from the date column
ddate = df_earning_calander.loc[
    df_earning_calander.index == stock_symbol, 'date'][stock_symbol]
print(ddate)

输出:

AAP
2019-05-22 00:00:00


第二次输入的数据帧:

symbol         Stock name         date               ...
AAP     Advance Auto Parts Inc 2018-11-13            ...
AAP     Advance Auto Parts Inc 2019-02-15            ...
AAP     Advance Auto Parts Inc 2019-02-19            ...
AAP     Advance Auto Parts Inc 2019-05-21            ...
AAP     Advance Auto Parts Inc 2019-05-22            ...
输入:
#get all the dates from the date column
ddate_12 = df_earnings_12.loc[
    df_earnings_12.index == stock_symbol, 'date'][stock_symbol]
print(ddate_12)

输出:

AAP   2018-11-13
AAP   2019-02-15
AAP   2019-02-19
AAP   2019-05-21
AAP   2019-05-22
Name: date, dtype: datetime64[ns]
if ddate in ddate_12:
    continue

好吧,我正在检查第一个数据帧的日期是否在第二个数据帧中,并且(股票名称相同)。
此代码不会转到下一个iterable。我想是因为第二个输出给了我股票名称和日期,而不仅仅是日期。你知道吗


Tags: the数据dfautodatestockopensymbol
1条回答
网友
1楼 · 发布于 2024-06-01 20:35:18

您可以只选择日期列,按^{}创建2列DataFrame,如果可能的话,复制对添加^{}

df1 = df_earning_calander['date'].reset_index().drop_duplicates()
print (df1)
  symbol        date
0    AAP  2019-05-22
1    ADI  2019-05-22
2     CM  2019-05-22
3   CSWI  2019-05-22
4   KLXE  2019-05-22

df2 = df_earnings_12['date'].reset_index().drop_duplicates()
print (df2)
  symbol        date
0    AAP  2018-11-13
1    AAP  2019-02-15
2    AAP  2019-02-19
3    AAP  2019-05-21
4    AAP  2019-05-22

对于具有相同列名的两个DatFrames之间的交集,请使用^{}和默认的内部联接-获取与这两个列之间的所有datetime匹配的所有符号:

df = df1.merge(df2)
print (df)
  symbol        date
0    AAP  2019-05-22

Last if need符号测试列表比较布尔掩码的列df['symbol'],并通过^{}测试是否至少有一个True

mystocks = ['ADI','AAP']
for stock_symbol in mystocks:
    if ((df['symbol'] == stock_symbol).any()):
        print (f'Matched {stock_symbol}')
        #Matched AAP

相关问题 更多 >