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

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

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

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

Python

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

Q&A

解決済

2回答

4234閲覧

python csvデータから特定の行抽出

o-fk

総合スコア32

CSV

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

Python

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

0グッド

1クリップ

投稿2020/07/23 08:16

編集2020/07/23 12:19

イメージ説明
添付のように、読み込まれたcsvから2行目(8月1日1時)の行のみ抽出し、同様に他のデータからも2行目を抽出して、すべてを合わせた新たなcsvデータ(縦に繋げたもの)にしたいです。

試したこと

import pandas as pd import glob for f in glob.glob('2019年8月そらまめ君風向・風速/*.csv'): df = pd.read_csv(f, encoding='shift_jis') df = df[[1]] df.to_csv("2019_8.1.csv")

エラーは出てないですが、方法がわかりません。

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

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

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

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

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

guest

回答2

0

やりたいことは以下のような感じでしょうか。必要におうじ、出力したい列を絞ったりはしてください。

Python

1import pandas as pd 2from io import StringIO 3 4dfs = None 5for s in ['key,val\na,1\nb,2\nc,3','key,val\nb,4\nc,5\nd,6','key,val\nc']: # glob.globの代わり 6 df = pd.read_csv(StringIO(s)) 7 df = df[df['key'] == 'b'] 8 if dfs is None: 9 dfs = df 10 else: 11 dfs = pd.concat([dfs,df]) 12 13dfs = dfs.reset_index(drop=True) 14print(dfs) 15# key val 16#0 b 2.0 17#1 b 4.0 18 19dfs.to_csv('ret.csv', index=False) # indexは不要なので除外 20#key,val 21#b,2.0 22#b,4.0

投稿2020/07/23 10:57

can110

総合スコア38262

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

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

o-fk

2020/07/23 12:22

抜き出したいのは列ではなく行です。。。すみません、分かりずらい言い方をしてしまいました。。
can110

2020/07/24 01:00

回答コードでは複数のデータフレームからkey=bである「行」を抜き出しています。 こういうデータならこうなる、といった具体的でシンプルな入力と出力結果の例を示すことはできないでしょうか?
guest

0

ベストアンサー

2列目は「(8月1日1時)」ではないですね。時刻は3列目かと。
「すべてを合わせた新たなcsvデータにしたいです。」
が具体的に分かりません。
各ファイルの2列目を取り出して、縦につなげるのでしょうか、横につなげるのでしょうか。

まずご自身で自分が何をしたいかを整理してください。必要に応じて図や具体例をExcelで作るなどして。
そうすると

DataFrameから取り出した1列(df[[1]] この形式で取り出すと1列のDataFrameです)
を縦か横かに結合することが必要だ、自分はそこが分かっていないのだなと分かります。

そこまで分かると Python DataFrame 結合 でググればいいなと分かり、ググりますと
pandas.DataFrame, Seriesを連結するconcat
このような記事が多数見つかります

すると

Python

1pd.concat([df1, df2], axis=0)

縦なら axis=0、横なら axis=1 だな
となるかなと思います。

投稿2020/07/23 08:32

aokikenichi

総合スコア2218

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

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

o-fk

2020/07/23 09:14

わかりずらくて申し訳ありませんでした! 抜き出したいのは、8月1日1時の行です。。。 他のcsvデータからも同じ行を抜き出して、最終的に8月1日1時のみのcsvデータにしたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問