質問するログイン新規登録
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1465閲覧

複数フォルダに入っているcsvを日時を基準に結合したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/11/14 00:53

0

0

前提

大量の予測したcsvデータがあります。※予測データは「outフォルダ」の中には1か月分30個あります。
予測値は108時間分入っています。
out
|__
Aフォルダ⇒これが30個あります
|__A1.csv
A2.csv
A3.csv ....1時間ごと24個あります。

実現したいこと

すべて1時間ごとずれているデータになるので、日時を基準にすべてのデータを横に並べたいです。
2つのデータを指定してはできたのですが、フォルダ内にはいっているものを実行しようとするとできません。
いい方法が見つからず困っています。

発生している問題・エラーメッセージ

TypeError: Can only merge Series or DataFrame objects, a <class 'list'> was passed

該当のソースコード

python

1import pandas as pd 2import glob 3 4# パスで指定したファイルの一覧をリスト形式で取得 5csv_files = glob.glob('out/*/*.csv') 6 7#読み込むファイルのリストを表示 8for a in csv_files: 9 print(a) 10 11#csvファイルの中身を追加していくリストを用意 12data_list = [] 13 14#読み込むファイルのリストを走査 15for file in csv_files: 16 data_list.append(pd.read_csv(file)) 17 18df = pd.merge(data_list, on='startTime', how='outer', indicator=False, right=None) 19drop_df = df.drop(["lat", "lon", "windSpeed", "temperature"], axis=1) 20drop_df = drop_df.set_index('startTime') 21 22drop_df.to_csv("total_merge.csv",index=False)

試したこと

まず2つのデータでやりたいことが実行できるか試しました。
concatでも試してみたのですが、欲しいデータになりませんでした。

df = pd.merge(data_list, on='startTime', how='outer', indicator=False, right=None)に
right= Noneを入れていないと下記のエラーがでました。
TypeError: merge() missing 1 required positional argument: 'right'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

TypeError: Can only merge Series or DataFrame objects, a <class 'list'> was passed
MergeできるのはSeries型もしくはDataFrame型だけやで!ListはMergeできんわ! って怒られてます。要するにdata_ListがList型なんですね。
Merge関数を利用したい場合、先にdata_ListをDataFrame型に変換する必要があります。

Py

1df=pd.dataframe(data_List) 2df_merge=pd.merge(df, on='startTime', how='outer', indicator=False, right=None) 3

こんな感じでしょうか?実際に走らせてないので動作保証はできませんが…

投稿2022/11/14 01:09

pig_vba

総合スコア808

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/11/14 01:18

早々にありがとうございます! やってみたのですが、今度はこんなエラーが出てしまいました。 TypeError: Can only merge Series or DataFrame objects, a <class 'NoneType'> was passed
pig_vba

2022/11/14 01:25

NoneTypeってことはcolmun名登録してないからon='startTime'で引っかかってるのかな? 私の方ではdata_Listの中身が不明なのでこちらのサイトを参考にcolumn名などを登録したり試してもらえますか? https://www.yutaka-note.com/entry/pandas_list
退会済みユーザー

退会済みユーザー

2022/11/14 01:49

ありがとうございます。いろいろ試してみます。
退会済みユーザー

退会済みユーザー

2022/11/14 02:28

たびたび申し訳ありません。そのままdfを出力してみたら すべてcolumns名(lat lot pprecipitationIntensity)が719 rows × 1 columns並んでしまっているのですが 格納させたそれぞれのデータをデータフレームに入れる方法ってどうしたらいいでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問