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

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

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

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

pandas

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

Q&A

解決済

1回答

970閲覧

csvファイルからセルを検索し,そのセルの値を変更したい

recrystal

総合スコア3

CSV

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

pandas

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

0グッド

0クリップ

投稿2020/12/14 05:57

1.実現したいこと
csvファイルから「No」を検索し,一致した「No」の「Intensity」を変更したいです。
以下のコードでは例えばNoが3の時の「Intensity」の値を取り出そうとしていますが上手くいきません。
そもそもilocでの検索?が良くないのでしょうか。

また,そのセルの値を「0」に変更したいです。
特定のセルを指定してから,そのセルの値のみを変更する方法を教えてください。

どなたかよろしくお願いいたします。
2.コード

import pandas as pd df = pd.read_csv("test.csv") df = df[df['No'] == '3'] #Noが「3」を検索 f = df.iloc[:,1]#Noが「3」の時の「Intensity」をilocにて取り出した print(f) #ファイルの中身 """ No Intensity temperature 1 0.185675724 100 2 0.765843811 300 3 0.460450735 430 4 0.071395242 500 5 0.202293941 655 6 0.484834614 666 7 0.539863223 780 8 0.120027426 670 9 0.410055207 50 10 0.79596822 440 11 0.881314819 340 12 0.387487818 567 13 0.7095192 560 14 0.181453667 780 15 0.453416387 89 """

3.試したこと
・== を用いて完全一致している行を抽出
・セルの値の上書きについては,全く分かりませんでした。
4.使っているツール
python 3.7 , spyder

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

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

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

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

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

guest

回答1

0

ベストアンサー

読み込む時に、index_col=0して1列目の"No"をindexに指定しています。df.loc[3, "Intensity"]
csvじゃなくread_tableで読み込んでるのでそのままコピペはしないでくださいね。

python3

1import pandas as pd 2import io 3 4# テスト用データ作成 5test =""" 6No Intensity temperature 71 0.185675724 100 82 0.765843811 300 93 0.460450735 430 104 0.071395242 500 115 0.202293941 655 126 0.484834614 666 137 0.539863223 780 148 0.120027426 670 159 0.410055207 50 1610 0.79596822 440 1711 0.881314819 340 1812 0.387487818 567 1913 0.7095192 560 2014 0.181453667 780 2115 0.453416387 89 22""" 23df = pd.read_table(io.StringIO(test), index_col=0, delimiter=" ") 24print(df.loc[3, "Intensity"]) 25# 0.460450735

そのまま使うなら以下を。確認はしてませんが。

python3

1import pandas as pd 2 3df = pd.read_csv("test.csv", index_col=0) 4print(df.loc[3, "Intensity"])

投稿2020/12/14 06:30

jeanbiego

総合スコア3966

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

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

recrystal

2020/12/14 07:10

回答ありがとうございます。 指定したIntensityの値は取り出すことに成功しました! あと,その値を変更することは可能でしょうか?
jeanbiego

2020/12/14 07:16

df.loc[3, "Intensity"] = 1 こんな感じで変更してみてください。
recrystal

2020/12/14 07:37

望んでいたことができました! ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問