

2つのデータフレームを作って、特定の年の値を取得する方法が上手くいきません。

[code]

    start = '1976-01-01' 
    end =   '2020-01-01'
    df1 = data.DataReader('^N225', 'yahoo',start, end)
    
[/code]

df2の方には、

[code]

        year    小学校 中学校 高校
    0   1976    13,312  5,743   6,420
    1   1979    16,034  6,215   5,904
    2   1982    20,023  9,609   7,331
    3   1985    19,583  10,109  7,987
    4   1988    17,368  10,417  8,791
    
[/code]

のような1976年から3年ごとのデータがあります。

df1とdf2を比べて、df1を年でまとめて、df2の3年おきの西暦に合わせて値を取得したいのですが上手くいきません。

[code]

    #df1
    year = df1.index
    price = df1['Adj Close']
    
    df1 = df1.resample('Y').max()
    
    #df2
    df['小学校'] = df['小学校'].str.replace(',','').astype(np.int)
    df['中学校'] = df['中学校'].str.replace(',','').astype(np.int)
    df['高校'] = df['高校'].str.replace(',','').astype(np.int)
    
[/code]

のように一応集計できるようにはし、

[code]

    nikkei_year = []
    nikkei_price =[]
    
    for i in list(df2['year']):
        if i == df1['year]:
            nikkei_year.append(i)
            nikkei_price.append(df['price'])
    
[/code]

とやってみたのですが、エラーがでてしまいました。

[code]

    for i in list(df2['year']):
    ----> 5     if i == df['year']:
          6         nikkei_year.append(i)
          7         nikkei_price.append(df['price'])
    
    ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
    
    
[/code]

解決方法をご教示頂けると助かります！

追記  
df1の内容です。

[code]

    High    Low Open    Close   Volume  Adj Close
    Date                        
    1976-01-05  4403.060059 4403.060059 4403.060059 4403.060059 0.0 4403.060059
    1976-01-06  4449.700195 4449.700195 4449.700195 4449.700195 0.0 4449.700195
    1976-01-07  4469.100098 4469.100098 4469.100098 4469.100098 0.0 4469.100098
    1976-01-08  4485.770020 4485.770020 4485.770020 4485.770020 0.0 4485.770020
    1976-01-09  4484.049805 4484.049805 4484.049805 4484.049805 0.0 4484.049805
    
[/code]


CC BY-SA 4.0
2021-01-05T18:19:35.867
73106
2021-01-06T03:34:33.423
2021-01-06T03:32:36.070
3060
43427
question
python python3
Pythonで特定の年の値だけを取得する方法を教えて下さい。


以下のように2つの部分を変更してください。

変更元：

[code]

    #df1
    year = df1.index
    price = df1['Adj Close']
    
[/code]

変更後

[code]

    #df1
    df1['year'] = df1.index.year
    df1['price'] = df1['Adj Close']
    
[/code]

* * *

変更元：

[code]

        if i == df1['year]:
            nikkei_year.append(i)
            nikkei_price.append(df['price'])
    
[/code]

変更後

[code]

        df = df1[df1['year'] == i]
        if not df.empty:
            nikkei_year.append(i)
            nikkei_price.append(df['price'])
    
[/code]


CC BY-SA 4.0
2021-01-06T03:34:33.423
73115
2021-01-06T03:34:33.423
26370
73106
answer