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

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

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

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

Python

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

Q&A

解決済

1回答

983閲覧

Pythonを使ってCSVファイル内の特定の文字列の個数と何列目にあるかを取得して出力するプログラムを作りたい

antman

総合スコア1

CSV

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

Python

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

0グッド

0クリップ

投稿2021/11/18 05:33

編集2021/11/19 04:39

前提・実現したいこと

膨大なデータが格納されている50000行1列(行と列は環境によって変わるかもしれないですが、サンプルが正しい形になります)ぐらいの形のCSVファイル内にてenergyという単語の個数と何列目にあるかを出力してくれるプログラムを作りたいです。
ちなみにCSVファイル内のenergyという単語は1つだけではなくいろんな列に点在しています。(下にCSVファイルの例を載せています)
基本的にファイルを読み込むプログラムの部分はわかるのですが、特定の単語が何個存在するかと何列目に位置してるかを教えてくれるプログラムがわかりません。
どなたか教えて頂けると助かります。

CSVファイルの例

154 126 energy 123 159 118 458 energy 698 459 ・ ・ ・

該当のソースコード

Python

1from scipy.optimize import curve_fit 2import numpy as np 3import matplotlib.pyplot as plt 4import matplotlib.cm as cm 5import pandas as pd 6import os, tkinter, tkinter.filedialog, tkinter.messagebox 7import tkinter as tk 8from matplotlib.figure import Figure 9from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk 10 11root = tkinter.Tk() 12root.withdraw() 13 14filetype = [("", "*.csv")] 15 16dirpath = os.path.abspath(os.path.dirname(__file__)) 17tkinter.messagebox.showinfo('fileselect', 'ファイルを選択してください') 18 19filepath = tkinter.filedialog.askopenfilename(filetypes = filetype, initialdir = dirpath) 20 21dataset = pd.read_csv(filepath)

試したこと

インターネットでやり方を調べたのですが、特定の単語の前後を表示する方法は見つかったのですが何列目にあるかを表示する方法が見つかりませんでした。

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

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

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

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

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

1T2R3M4

2021/11/18 08:04 編集

以下を読まれたうえでの投稿でしょうか。 https://teratail.com/help/avoid-asking コードをください・デバッグしてください等の丸投げの質問 何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。
meg_

2021/11/18 11:05

> 1行50000列ぐらいの形のCSVファイル csvファイルのサンプルが上記形式ではありません。確認してください。
antman

2021/11/19 04:36

すみません、サンプルの形式が正しくて50000行1列が正しい呼び方ですね。
meg_

2021/11/19 05:14

> 行と列は環境によって変わるかもしれない そこが変わるとコードも変わると思います。 50000行1列であればpandas使うのが楽かと思います。
guest

回答1

0

ベストアンサー

data.csv

csv

1154 2126 3energy 4123 5159 6118 7458 8energy 9698 10459

python

1import pandas as pd 2 3df = pd.read_csv('data.csv', header=None) 4match_energy = (df[0] == 'energy') 5 6count = match_energy.sum() 7matched_index = df.index[match_energy].tolist() 8 9print(count) 10print(matched_index) 11 12# 132 14[2, 7]

投稿2021/11/19 05:58

編集2021/11/19 06:07
melian

総合スコア20655

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

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

antman

2021/11/19 06:21

ありがとうございます。 無事動きました。本当に頭が上がりません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問