🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

771閲覧

【Pandas】日付の異なる2つのCSVをマージしたい

matsuo_basho

総合スコア88

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

1クリップ

投稿2021/01/21 05:35

いつもお世話になっております。

Pandasを利用して2つのcsvのデータをマージしたいのですが、
日付の異なるデータをマージする場合どのように行うのが一般的なのかご教授いただきたいです。

具体的には、例えば以下の2つのCSVがあるとします。

A.csv

日付,申し込み数 2020/1/16,1 2020/1/17,0 2020/1/18,0 2020/1/19,0 2020/1/20,0 2020/1/21,0 2020/1/22,0 2020/1/23,0 2020/1/24,1 2020/1/25,1 2020/1/26,1 2020/1/27,0 2020/1/28,3 2020/1/29,1 2020/1/30,3 2020/1/31,1 2020/2/1,0 2020/2/2,0 2020/2/3,0 2020/2/4,2 2020/2/5,2 2020/2/6,0 2020/2/7,0 2020/2/8,0 2020/2/9,0 2020/2/10,0 2020/2/11,0 2020/2/12,1 2020/2/13,4 2020/2/14,7 2020/2/15,12 2020/2/16,6 2020/2/17,7 2020/2/18,7 2020/2/19,10 2020/2/20,9 2020/2/21,11 2020/2/22,27 2020/2/23,12 2020/2/24,12 2020/2/25,8 2020/2/26,22 2020/2/27,24 2020/2/28,20 2020/2/29,9 2020/3/1,15 2020/3/2,14 2020/3/3,16 2020/3/4,33 2020/3/5,31 2020/3/6,59 2020/3/7,47 2020/3/8,33 2020/3/9,26 2020/3/10,54 2020/3/11,52 2020/3/12,55 2020/3/13,40 2020/3/14,62 2020/3/15,33 2020/3/16,15 2020/3/17,44 2020/3/18,39 2020/3/19,36 2020/3/20,53 2020/3/21,34 2020/3/22,42 2020/3/23,38 2020/3/24,65 2020/3/25,93 2020/3/26,96 2020/3/27,104 2020/3/28,194 2020/3/29,185 2020/3/30,74 2020/3/31,218

B.csv

日付,来場者数 2020/2/4,15 2020/2/5,16 2020/2/6,12 2020/2/7,12

これを以下のC.csvのように作成したいです。

C.csv

日付,申し込み数,来場者数 2020/1/16,1 2020/1/17,0 2020/1/18,0 2020/1/19,0 2020/1/20,0 2020/1/21,0 2020/1/22,0 2020/1/23,0 2020/1/24,1 2020/1/25,1 2020/1/26,1 2020/1/27,0 2020/1/28,3 2020/1/29,1 2020/1/30,3 2020/1/31,1 2020/2/1,0 2020/2/2,0 2020/2/3,0 2020/2/4,2,15 2020/2/5,2,16 2020/2/6,0,12 2020/2/7,0,12 2020/2/8,0 2020/2/9,0 2020/2/10,0 2020/2/11,0 2020/2/12,1 2020/2/13,4 2020/2/14,7 2020/2/15,12 2020/2/16,6 2020/2/17,7 2020/2/18,7 2020/2/19,10 2020/2/20,9 2020/2/21,11 2020/2/22,27 2020/2/23,12 2020/2/24,12 2020/2/25,8 2020/2/26,22 2020/2/27,24 2020/2/28,20 2020/2/29,9 2020/3/1,15 2020/3/2,14 2020/3/3,16 2020/3/4,33 2020/3/5,31 2020/3/6,59 2020/3/7,47 2020/3/8,33 2020/3/9,26 2020/3/10,54 2020/3/11,52 2020/3/12,55 2020/3/13,40 2020/3/14,62 2020/3/15,33 2020/3/16,15 2020/3/17,44 2020/3/18,39 2020/3/19,36 2020/3/20,53 2020/3/21,34 2020/3/22,42 2020/3/23,38 2020/3/24,65 2020/3/25,93 2020/3/26,96 2020/3/27,104 2020/3/28,194 2020/3/29,185 2020/3/30,74 2020/3/31,218

どなたか詳しい方がいらっしゃればご教授いただけますと幸いです。
それではどうぞ宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

2つのデータフレームをhow='outer'でマージしてください。

なお、そのままマージする(以下のコードの★★の行をコメントにする)と、来場者数が存在しない日付の来場者数がNaNになり、(NaNを扱う都合上)来場者数のdtypeはfloatになります。そのため、C.csvには、NaNは空欄、floatは「.0」付きの数値として記録されます。

NaNを0に置換してdtypeをintに変更するには、★★の行をCSVファイルに保存する前に実行してください。

Python

1import pandas as pd 2import io 3 4 5pd.set_option('display.unicode.east_asian_width', True) 6 7df1 = pd.read_csv("A.csv")) 8# print(df1) 9 10df2 = pd.read_csv("B.csv") 11# print(df2) 12 13dfm = pd.merge(df1, df2, how='outer') 14dfm = dfm.fillna({'来場者数': 0}).astype({'来場者数': int}) # ★★ 15# print(dfm) 16 17dfm.to_csv("C.csv", index=False)

投稿2021/01/21 06:23

編集2021/01/21 06:23
Daregada

総合スコア11990

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

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

matsuo_basho

2021/01/21 13:04

素早いご回答ありがとうございます!! 無事に想定していた動きを再現することができました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問