見出し画像

【Python】DataFrame内のある列に、\t\nとか改行やらがあって、それを消去する方法

解消した方法

df_xx['予'] = df_xx['予'].str.strip()

次点

df_xx['予'] = df_xx['予'].replace("\t","", regex=True)
​df_xx['予'] = df_xx['予'].replace("\n","", regex=True)

実際のデータ

\n \tを消したい。

                                          予  
0   \n\t\t\t\t\t\t\t\t\t◎\n\t\t\t\t\t\t\t\t
1   \n\t\t\t\t\t\t\t\t\t△\n\t\t\t\t\t\t\t\t

試行錯誤中のエラー

これはエラーが出るが近いところまで処理できている。
当初、列全体に置換処理をしようとするとエラーが出ていたので、一行ずつやったらどうなるかと思った時のもの。
処理も遅いし、完全に不要文字が消えない。

for index,item in df_xx.iterrows():

   df_xx['予'][index] = item['予'].replace('\t', '')
   df_xx['予'][index] = item['予'].replace('\n', '')

print(df_xx)

エラー文

A value is trying to be set on a copy of a slice from a DataFrame
​Try using .loc[row_indexer,col_indexer] = value instead

2行目に目が行くのですが、1行目が大事だと英語サイトに書いてありました。
スライスのコピー(列とか行とか部分を取り出したものとして)に値を入れる部分でエラー。

解説するほど詳しくないものの、スライスへの値を挿入する際に、Pandas側でユーザーがどうしたいのかはっきりしないから、はっきりしろという風に無理やり理解。

▽Python参考記事

【Python】print等の表示を省略しない。行列の両方向を省略しない【全て表示】

【Python】Featuretools ft.list_primitives() パラメータ一覧 #特徴量

【Python】DataFrame内のある列に、\t\nとか改行やらがあって、それを消去する方法

いつもお読みいただき、ありがとうございます。 書くだけでなく読みたいので、コメント欄で記事名入れてもらうと見に行きます。