2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pandasの不要な改行を削除する方法

Posted at

なぜ書いた?

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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?