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

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

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

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

Python

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

Q&A

1回答

1082閲覧

pythonでCSVを読み込んで特定の値以上のセル番地を書き出す方法について

yungopo

総合スコア1

CSV

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

Python

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

0グッド

1クリップ

投稿2022/11/30 08:26

編集2022/11/30 08:29

前提

pythonでCSVを読み込んで特定の値以上のセル番地を書き出すプログラムを作成しています。
調べたら行と列を指定して値を取得するものはあっても、数値が条件に一致する行列のセル番地を返すというのは
どこにも載ってなかったので教えてほしいです。よろしくお願いします。

実現したいこと

・CSVファイルを読み込む【済】
・行名・列名はCSVにあるため、ある一定以上の値を抽出してそれに紐づく行列名を付ける
(例:0.3以上の数値はA1,B1,F1・・・とか)
・それぞれのセル番地を一列に並べてexcelもしくはcsvで出力

python

1 2import csv 3import pandas as pd 4 5df=pd.read_csv(r"C:\Users\-----\Desktop\------.csv", sep=",", index_col=0, header=0) 6print(df) 7 8```  9 10### 補足情報 11windows11 12python 3.10.8 13 14 15CSVの中身はこんな感じです。(上のソースコード出力結果) 16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 17A 0.700 0.219 0.596 0.223 0.563 0.221 0.248 0.215 0.516 0.313 0.540 0.235 0.690 0.206 0.659 0.690 0.638 0.607 0.212 0.334 0.800 0.244 0.244 0.248 18B 0.726 0.211 0.209 0.212 0.217 0.221 0.205 0.218 0.699 0.408 0.216 0.681 0.208 0.218 0.697 0.686 0.582 0.211 0.797 0.669 0.211 0.589 0.809 0.771 19C 0.215 0.219 0.203 0.620 0.602 0.221 0.703 0.621 0.584 0.208 0.613 0.315 0.513 0.551 0.207 0.208 0.653 0.213 0.206 0.211 0.218 0.218 0.225 0.533 20D 0.232 0.228 0.214 0.332 0.219 0.548 0.217 0.583 0.209 0.212 0.202 0.215 0.207 0.668 0.690 0.210 0.519 0.212 0.209 0.426 0.735 0.670 0.220 0.228 21E 0.282 0.233 0.212 0.434 0.217 0.604 0.373 0.445 0.187 0.206 0.202 0.201 0.312 0.197 0.206 0.197 0.573 0.420 0.211 0.220 0.672 0.222 0.752 0.236 22F 0.639 0.228 0.211 0.221 0.211 0.213 0.627 0.216 0.197 0.591 0.426 0.553 0.199 0.753 0.206 0.206 0.202 0.517 0.636 0.636 0.658 0.221 0.764 0.242 23G 0.238 0.227 0.667 0.220 0.218 0.596 0.524 0.547 0.754 0.600 0.725 0.220 0.214 0.210 0.188 0.205 0.660 0.680 0.214 0.560 0.715 0.576 0.553 0.730 24H 0.240 0.231 0.216 0.612 0.717 0.221 0.452 0.215 0.488 0.216 0.552 0.690 0.224 0.665 0.216 0.286 0.465 0.590 0.225 0.205 0.209 0.224 0.713 0.259 25I 0.226 0.405 0.216 0.316 0.212 0.216 0.210 0.784 0.555 0.199 0.728 0.548 0.222 0.356 0.207 0.857 0.483 0.722 0.219 0.792 0.819 0.430 0.361 0.261 26J 0.693 0.310 0.213 0.670 0.574 0.514 0.210 0.439 0.332 0.177 0.229 0.278 0.219 0.574 0.214 0.766 0.528 0.212 0.219 0.774 0.228 0.232 0.222 0.230 27K 0.220 0.215 0.685 0.206 0.457 0.205 0.477 0.184 0.197 0.643 0.595 0.213 0.212 0.215 0.704 0.596 0.718 0.746 0.735 0.225 0.224 0.308 0.820 0.231 28L 0.215 0.724 0.211 0.234 0.541 0.207 0.559 0.370 0.691 0.204 0.688 0.226 0.281 0.214 0.207 0.214 0.614 0.210 0.526 0.214 0.222 0.749 0.770 0.191 29M 0.223 0.238 0.607 0.211 0.219 0.563 0.708 0.209 0.205 0.202 0.204 0.669 0.248 0.222 0.697 0.217 0.696 0.212 0.770 0.216 0.719 0.221 0.744 0.235 30N 0.225 0.226 0.212 0.834 0.717 0.214 0.832 0.208 0.293 0.214 0.672 0.214 0.753 0.224 0.754 0.213 0.221 0.220 0.212 0.222 0.222 0.223 0.224 0.225 31O 0.749 0.521 0.217 0.702 0.757 0.214 0.661 0.205 0.640 0.209 0.216 0.219 0.214 0.631 0.402 0.221 0.233 0.217 0.629 0.227 0.467 0.234 0.473 0.229 32P 0.739 0.238 0.572 0.229 0.303 0.221 0.708 0.336 0.221 0.221 0.226 0.235 0.513 0.239 0.226 0.645 0.641 0.617 0.495 0.218 0.227 0.466 0.237 0.625 33 34

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

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

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

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

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

melian

2022/11/30 10:12

Numpy の where() を使うとインデックスを取得することができます。 import numpy as np print(np.where(df > 0.3))
meg_

2022/11/30 11:48

> どこにも載ってなかったので教えてほしいです。 情報が0ということはないはずなので、調べ方が良くないのかもしれません。どのように調べられましたか?
yungopo

2022/11/30 15:50

ありがとうございます! googleで"python 2次元配列 抽出 条件 数値 インデックス csv”などと入力して検索していました。
TakaiY

2022/12/01 05:32

> print(np.where(df > 0.3)) これだと、0.3以下のものがNaNになったdfができますが、ここからセル番地(A1,B1,F1・・・)を取得するのはどうやるのでしょう? そこが僕にはわからなくて。 (csvモジュールを使う方法ならすぐわかります)
guest

回答1

0

python

1indexes = np.where(df >= 0.3) 2for row, index in zip(indexes[0], indexes[1]): 3 print(df.index[row], index+1) 4# A 1 5# A 3 6# A 5 7# ...

投稿2022/12/01 11:02

編集2022/12/01 11:03
meg_

総合スコア10580

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問