なぜ書いた?
pandasで事前処理を実装していた時にdf.replace('\r','')
が機能せずに苦しんだため、他の方にも解決法を共有できればと思ったためです。
うまくいかなった原因
オブジェクト型のデータに対して文字列のための(デフォルトの)replaceを使っても効果がなかったためです。
うまくいく書き方
オブジェクト型のデータにも効果があるreplaceの使い方をすることで効果を出すことができました。
実際の書き方
具体的には、下記のように正規表現を利用した形でreplaceを使うことでうまくいきました。
事前に整形できていないデータの場合(df内の対象がオブジェクト型の場合)
import pandas as pd
import tabula
# pdfの表を無理やりpandasのdataframe型の集合体に変換 (不要な改行などが入っているdataframeが作成されます)
dfs = tabula.read_pdf("xxx.pdf", lattice=True, pages='1-3')
# 以下のように記載することで改行がなくなります
for df in dfs:
df = df.replace("\r", "",regex=True)
余談(綺麗なデータの場合(df内の対象が文字列型の場合)のreplace関数の使い方)
よくある書き方
import pandas as pd
data = {
'Name':['A','B','C','D','E'],
'Number':[100,200,300,400,500]
}
# 綺麗なテストデータを作成
df = pd.DataFrame(data, columns =['Name','Number'],index=['Item1','Item2','Item3','Item4','Item5'])
# 以下のように記載することでAがaへと変換されます
df.replace('A','a')
参考資料
解決につながった記事(Yahoo知恵袋):
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14268433589
公式リファレンス:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.replace.html