pandas約20列のデータフレームがあります。
すべての列名を手動で書き込むことにより、文字列(ここでは改行)のすべての出現を置き換えることができます。
df['columnname1'] = df['columnname1'].str.replace("\n","<br>")
df['columnname2'] = df['columnname2'].str.replace("\n","<br>")
df['columnname3'] = df['columnname3'].str.replace("\n","<br>")
...
df['columnname20'] = df['columnname20'].str.replace("\n","<br>")
残念ながらこれは機能しません:
df = df.replace("\n","<br>")
他のよりエレガントなソリューションはありますか?
replace
を使用して、文字列を渡して、辞書キー/アイテムとして検索/置換できます。
df.replace({'\n': '<br>'}, regex=True)
例えば:
>>> df = pd.DataFrame({'a': ['1\n', '2\n', '3'], 'b': ['4\n', '5', '6\n']})
>>> df
a b
0 1\n 4\n
1 2\n 5
2 3 6\n
>>> df.replace({'\n': '<br>'}, regex=True)
a b
0 1<br> 4<br>
1 2<br> 5
2 3 6<br>
Pandasは、正規表現を処理する際のあいまいさを避けるためにAPIを変更したようです。
df.replace({'\n': '<br>'}, regex=True)
例えば:
>>> df = pd.DataFrame({'a': ['1\n', '2\n', '3'], 'b': ['4\n', '5', '6\n']})
>>> df
a b
0 1\n 4\n
1 2\n 5
2 3 6\n
>>> df.replace({'\n': '<br>'}, regex=True)
a b
0 1<br> 4<br>
1 2<br> 5
2 3 6<br>
これにより、すべての改行と不要なスペースが削除されます。 '' .joinを編集して、置換文字を指定できます
df['columnname'] = [''.join(c.split()) for c in df['columnname'].astype(str)]