web-dev-qa-db-ja.com

パンダNaNを空白または空の文字列で置き換えます

以下に示すように、Pandasデータフレームがあります。

    1    2       3
 0  a  NaN    read
 1  b    l  unread
 2  c  NaN    read

NaN値を空の文字列で削除して、次のようにします。

    1    2       3
 0  a   ""    read
 1  b    l  unread
 2  c   ""    read
144
user1452759
import numpy as np
df1 = df.replace(np.nan, '', regex=True)

これは役に立つかもしれません。すべてのNaNを空の文字列に置き換えます。

165
nEO

少し短いです:

df = df.fillna('')

あるいは単に

df.fillna('',inplace=True)

これはna(例:NaN)を ''で埋めます。

単一の列を埋める場合は、次のものを使用できます。

df[column1] = df.column1.fillna('')
240
fantabolous

ファイル(CSVやExcelなど)からデータフレームを読み込む場合は、次のようにします。

  1. df.read_csv(path , na_filter=False)
  2. df.read_Excel(path , na_filter=False)

これは自動的に空のフィールドを空の文字列と見なします ''


データフレームがすでにある場合

  • df = df.replace(np.nan, '', regex=True)
  • df = df.fillna('')
72
Natesh bhat

印刷時にうまくレンダリングされるようにフォーマットするだけの場合は、フォーマッタを使用します。 DataFrameを不必要に変更したりメモリを無駄にすることなく、df.to_string(... formattersを使ってカスタム文字列フォーマットを定義するだけです。

df = pd.DataFrame({
    'A': ['a', 'b', 'c'],
    'B': [np.nan, 1, np.nan],
    'C': ['read', 'unread', 'read']})
print df.to_string(
    formatters={'B': lambda x: '' if pd.isnull(x) else '{:.0f}'.format(x)})

取得するため:

   A B       C
0  a      read
1  b 1  unread
2  c      read
2
Steve Schulist

keep_default_na=Falseを使用すると、次のことができます。

df = pd.read_csv(filename, keep_default_na=False)
0
Bendy Latortue

私は、nanを使用して文字列値の1つの列を試しました。

Nanを削除して空の文字列を埋めるには:

df.columnname.replace(np.nan,'',regex = True)

Nanを削除していくつかの値を入力するには:

df.columnname.replace(np.nan,'value',regex = True)

Df.ilocも試しました。ただし、列のインデックスが必要です。そのため、もう一度テーブルを調べる必要があります。単純に上記の方法は1ステップを削減しました。

0
Vidya Sekar

これを試して、

inplace=Trueを追加

import numpy as np
df.replace(np.NaN, ' ', inplace=True)
0
Vineesh TP

DataFrameをJSONに変換している場合、NaNはエラーになるので、この使用例ではNaNNoneに置き換えることが最善の解決策です。
これは次のとおりです。

df1 = df.where((pd.notnull(df)), None)
0