前提・実現したいこと
1つ目のcsvには行ごとに1つのデータが入っていてその列に時間のデータが入っている。2つ目のcsvも行ごとにデータが入っており開始時間、終了時間、抽出したいデータ列が入っている。この1つ目のcsvの時間が2つ目のcsvの開始時間、終了時間の間に当てはまったら同じ行の抽出したいデータ列を抽出し、1つ目のcsvに出力したい。そのため2つのcsvをcrossさせ行ごとに1つのデータになっているcsvと作り、その行内には開始時間、終了時間、時間、データ、の列があるので、この時間の列の値が開始時間と終了時間の間に当てはまればデータの列の値を取り出し、元の1つ目のcsvに出力したい
発生している問題・エラーメッセージ
開始時間と終了時間に当てはまる時間は1つしかないはずなので1つのデータだけが取り出されるはずだが、複数のデータが抽出されてしまう。 時間の形式は2020/12/11 3:23:00のような感じで開始時間と終了時間ともに同様の形式です。
該当のソースコード
df1 = pd.read_csv('データ1.csv', parse_dates=True,encoding='shift jis') df2 = pd.read_csv('データ2.csv',parse_dates=True,encoding='shift jis') df_cross = pd.merge(df1,df2,how='cross') result = pd.merge(df1, df_cross[(df_cross['表示開始時間']<df_cross['時間']) & (df_cross['時間']<df_cross['表示終了時間'])][['時間','1面目上段表示内容','2面目上段表示内容']], how='left')
補足情報(FW/ツールのバージョンなど)
python
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/11 06:24
2021/12/11 06:29
2021/12/11 06:40
2021/12/11 06:46
2021/12/11 06:54