

seriesに対し、日付をkeyにしてmerge_df1を左外部結合の下記のプログラムを実行するとエラーが発生するのですがなぜなのでしょうか？

[code]

    import numpy as np
    import pandas as pd
    
    series = pd.Series(['1/1', '1/2', '1/3', '1/4', '1/5', '1/6','1/7',
                    '1/8','1/9','1/10','1/11','1/12','1/13','1/14'],name='日付')
    df1 = pd.DataFrame({'日付':['1/1', '1/2', '1/3', '1/4', '1/6','1/7'],
                        '天気':['晴れ', '曇り', '晴れ', '曇り', '晴れ','曇り']})
    df2 = pd.DataFrame({'日付':['1/8', '1/14', '1/9', '1/12', '1/11'],
                        '天気':['雨', '晴れ', '晴れ', '雨', '晴れ']})
    
    # 2つのDataFrameを縦方向に連結
    merge_df1 = np.concatenate([df1,df2],axis=0)  
    print(f'連結：\n{merge_df1}\n')
    
    # seriesに対し、日付をkeyにしてmerge_df1を左外部結合
    merge_df2 = pd.merge(series,merge_df1,on='日付',how='left')
    print(f'日付をkeyに左外部結合：\n{merge_df2}\n')
    
[/code]


CC BY-SA 4.0
2022-05-24T02:10:02.253
89011
2022-12-02T04:07:20.893
2022-05-24T04:33:20.880
3060
52763
question
python pandas
Pandas でのデータ結合時にエラーが発生する


まず、エラー文も載せるようにしましょう。

私の方で動かして出しました。

> Can only merge Series or DataFrame objects, a <class 'numpy.ndarray'> was
> passed

マージ出来るのはシリーズかデータフレームオブジェクトだけですが、numpy配列が渡されました。  
という意味です。

つまりseriesかmerge_df1のどちらかがnumpy配列オブジェクトの可能性があります。  
型をプリントしてみましょう。

print(type(series))  
print(type(merge_df1))

> <class 'pandas.core.frame.DataFrame'>  
>  <class 'numpy.ndarray'>

merge_df1がデータフレームではなくnumpy配列になっています。  
私もここで気が付きましたが、np.concatenate()で結合しているのであたりまえですね。

このようにチェックして頂けたらと思います。  
「pandas dataframe 結合」等で調べ直して見ましょう。


CC BY-SA 4.0
2022-05-24T02:43:01.787
89013
2022-05-24T02:43:01.787
52019
89011
answer