どうもおはようポテト(@ohayoupoteto22)です。
PythonでCSVファイルを取り扱う際に色々手こずったので、備忘録も兼ねて「CSVファイルを行ごとに読み込み、列を追加する方法」をまとめようと思います
ブログ主
お品書き
CSVファイルをどうしたいのか
アーマードゴリラ | 93 |
育ちすぎたポチ | 44 |
ムカデ長老 | 73 |
モスキート娘 | 58 |
深海王 | 85 |
ホームレス帝 | 60 |
ガロウ | 99 |
エビル天然水 | 60 |
このようなCSVファイルがあったとして「列を追加して2列目の値に応じて3列目の値を変えたい」というわけです。
例えば「80以上なら”竜”、60以上なら”虎”を3列目に追加したい」ってな感じです(›´ω`‹ )
くるみ
環境
Python 3.7.7
PythonでCSVファイルを行ごとに読み込む方法
とりあえずコード全体というか結論から。
import tkinter as tk
import tkinter.filedialog as fd
import pandas as pd
file2='sample3.csv'
df = pd.read_csv(file2, encoding = 'shift-jis',header=None, names=['怪人', '戦闘力'])
#見出しを用意
df['災害レベル']=""#事前に列を用意
for i, row in df.iterrows():
if row[1]>=90:
df['災害レベル'][i] = "神"#3列目に災害レベルを入れる
elif row[1]>=80:
df['災害レベル'][i] = "竜"
elif row[1]>=70:
df['災害レベル'][i] = "鬼"
elif row[1]>=60:
df['災害レベル'][i] = "虎"
else:
df['災害レベル'][i] = "狼"
root =tk.Tk()
root.withdraw()
file=fd.asksaveasfilename(
initialfile="disaster_level",
defaultextension=".csv",
title="保存場所を選んでね",
filetypes=[("TEXT",".csv")]
)
with open(file,"w",encoding = 'shift-jis') as f:
df.to_csv(f, index=False)#書き出す
print("保存完了です")
以上のように書いたところ…
ダイアログボックスが表示され,,,
指定した場所に保存され…
無事、3列目にそれぞれの災害レベルが追加されてました(っ´ω`c)
くるみ
ブログ主
細かく見てみると
使うライブラリ
import tkinter as tk
import tkinter.filedialog as fd
import pandas as pd
tkinterはダイアログボックスを表示・操作するためのライブラリ。
pandasは今回CSVファイルをいじいじするために必要なライブラリです。
ブログ主
$pip install pandas
CSVファイルを読み込んで見出しを用意
file_csv='sample3.csv'
df = pd.read_csv(file_csv, encoding = 'shift-jis',header=None, names=['怪人', '戦闘力'])
#見出しを用意
df['災害レベル']=""#事前に列を用意
pandasライブラリのread_csvメソッドでCSVファイルを読み込んでいます。
そして列を追加する際に何かと不便なので「names=」のところで見出しの名前を指定して見出しを設定。
そして列が無いと値も入れられないので事前に列を用意しておきます
行ごとに列に値を入れてく
for i, row in df.iterrows():
if row[1]>=90:
df['災害レベル'][i] ="神"#3列目に災害レベルを入れる
elif row[1]>=80:
df['災害レベル'][i] ="竜"
elif row[1]>=70:
df['災害レベル'][i] ="鬼"
elif row[1]>=60:
df['災害レベル'][i] ="虎"
else:
df['災害レベル'][i] ="狼"
itterrowsメソッドを使い、一行ごとにファイルを読み込んでいきます。パワー(2列目)はrow[1]に相当するので、各行そこの値から判断。
そして「df[‘災害レベル’][i]=〇」として値を入れています
ダイアログボックスを使い保存する
root =tk.Tk()
root.withdraw()
file=fd.asksaveasfilename(
initialfile="disaster_level",
defaultextension=".csv",
title="保存場所を選んでね",
filetypes=[("TEXT",".csv")]
)
with open(file,"w",encoding = 'shift-jis') as f:
df.to_csv(f, index=False)#書き出す
print("保存完了です")
くるみ
最後に:pandas便利だね
以上となります
他にも色々方法があると思いますが、色々調べてみたところpandasを使うのが一番楽そうだったので今回使ってみました。
Python初心者の自分でもある程度は使える代物なので、良心的ですね。
ブログ主
参考になれば幸いです!では⸝⸝- ̫ -⸝⸝