少し使っていないとすぐに忘れてしまう・・
pandas
csvの読み込みや統合、抽出、xlsからxlsxに変換する等々で大変重宝するpandas・・なのですがなぜか操作を忘れやすい・・
メモ投稿です。
複数のcsvファイルを1ファイルにまとめる
import pandas as pd
import csv
import glob
csvfiles = sorted(glob.glob('**/*.csv'))
csv_list = []
for i in csvfiles:
csv_list.append(pd.read_csv(i,encoding = 'shift-jis'))
df=pd.concat(csv_list)
df.to_csv('出力する名前', index = False , encoding="cp932")
globでフォルダ以下にあるcsvを取得
csvデータの入れ物をつくる
入れ物にどんどん入れていく
csvにする(記載ではインデックスなし)
CSVファイルに追記していく
ひとまとめにするのではなくて、例えばforでリストから読み込んで、随時追記していくパターン
インデックスはお好み、headerはFalseにすることが多そうです。
df.to_csv('ファイル名.csv')
for i in range(len(リスト)):
df = df.drop_duplicates()
df.to_csv('ファイル名' , mode='a' , header=False , index=False)
1行目で入れ物を作って、後段で追記していく
drop_duplicatesは重複の削除
「ファイルがなかったら作る」とか調整していくことになるかも
df.to_csvのmodeは初期だと上書き作成になる。
色々調べてると全ての検索はnote.nkmkさんへ繋がるのではないかと思ってくる
pandasでCSVファイルの書き込み・追記(to_csv) | note.nkmk.me
pandas.DataFrame, SeriesをCSVファイルとして書き込み(出力)するにはto_csv()メソッドを使う。既存のCSVファイルへの追記も可能。区切り文字を変更できるので、TSVファイル(タブ区切り)として保存することもで ...
重複しているデータを消す
df=df[~df.duplicated()]
条件に合ったrowだけ残す
df= df[df['インデックス名'] == 条件]
特手の値が含まれている行番号を探す
「headerにすべき行番号を探したい」と調べてました。
dfにする起点のvalueを指定して行番号・列番号を取れればいいなーと思っていたのですがどうも見当たらない・・query使ったら簡単にできるような投稿をたくさん見たんですが、うまくいかない。なぜだ!
ということで、間違いなくもっとキレイなやり方があるはずなのですけれど。動けばよかろうなのだ!の精神で。
df = pd.read_excel('拡張子までいれたexcelファイル名',header=None)
df =df[df[0] == "探したい単語"]
変数 = df.index[0]
・ヘッダーなしでdfにすることで、ヘッダーが0からの連番になる
・df[0]は、エクセルでいったらA列のところを指してます
・変数に何行目にあるかを戻します。
コメント