質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

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

Python

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

pandas

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

Q&A

0回答

1040閲覧

python のpandasを使ったmergeについて(条件付き)

huuuuuuu

総合スコア8

CSV

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

Python

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

pandas

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

0グッド

0クリップ

投稿2019/11/07 10:31

pythonのpandasを使用して、元となるデータの一覧表csvファイル(all_date.csv)から値を抽出し、list.csvのcost欄に値を書き込みたいと考えております。

元のデータ一覧表csvの中身↓

[car,buildings,cost][1,23,0.267][2,23,0.565][3,23,1.7625][1,54,0.65712][2,54,0.9836][3,54,0.234]......

car :1~3
buildings :連番ではない(かなりのデータ数ある)

であり、list.csv(中身は以下に記述)がある時に、元データのbuildingsとlist.csvのbuildings(二つのbuildingsは対応している)からlist.csvのcostを埋めるにはmergeで対応できるかと思います。

list.csv[buildings,time,cost][23,0.65, ][54,0.345, ].....

python

1import pandas as pd 2 3df = pd.read_csv("all_date.csv") 4df2 = pd.read_csv("list.csv") 5results = df.merge(df2,on="buildings") 6

ここから質問になるのですが、
①list.csvを[buildings,time,total_cost]としてtotal_cost=time+(元ファイルの)costとしたときにはどのように変更すればよろしいでしょうか。

②また、total_costを計算する為のcostはall_date.csvのbuildingsが同一でcarが異なるcostの3つのうち(最も小さいcostを用いることを原則とするが、使用できるcarの数に制限(car:1は1回のみ,car:2は2回,car:3は2回使用可能)がある時に、最小のcostを持つcarが制限数使われていた場合に最も小さいcostではなく、2番目に小さなcostを使用、3番目に小さなcostを使用するといった時にどのように変更したらよろしいでしょうか。
list.csvにはデータが30ほどあり、carの数(5台)を考えると、total_costを計算できるのは5つだけになります。計算できる5つをどのように決めるかは、list.csvのtimeが小さい順として考えています。

最終的にはlist.csvはlist1.csv~list1000.csvのように複数ファイルで同一のことをやりたいと考えております。

上記二点についてご教授いただけましたら、幸いです。
よろしくお願いいたします。

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

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

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

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

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

yuba

2019/11/07 11:35

all_date.csv のサンプルデータを見るに、buildingsからcostは一意に決まらないようです。 例えばlist.csvの一行目のcostにはどんな値が入ってほしいのでしょう?
huuuuuuu

2019/11/07 11:44

list.csvとall_date.csvにはbuildingsという共通項があります。 例としてlist_csvのbuildingsをみると23という数字があります。list_csvのcostに入れたい数字はall_date.csvのbuildingsが23のうちcostが最も小さい0.267になります。
meg_

2019/11/08 23:21

データが多くなければループ処理でも良いかと思います。 groupby()やmap()を使用すれば大きなデータにも対応できるかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問