无法通过熊猫中的lambda填写多列中的NaN值

时间:2019-03-26 15:23:40

标签: python pandas numpy

我试图在我的DataFrame all_files_d中用0填充所有浮点数NaN值,然后将其放入一个空列表或名为ts的DataFrame中。

我的样本示例如下:

 ColX              ColY
 56.9              6.4
 67.5              NaN
 NaN               8.9
 NaN               NaN

我尝试遵循此问题代码,因为它似乎对某些用户有效,但似乎存在NaN值,但未填充任何内容:

Fillna in multiple columns in place in Python Pandas

这是我的代码:

ts = []
all_files_d.apply(lambda x: x.fillna(0, inplace = True) if x.dtype.kind
 in 'f' else x.fillna('.', inplace = True), axis = 1)

ts.append(all_files_d)

我希望在所有NaN都填满0的情况下获得以下结果。

 ColX              ColY
 56.9              6.4
 67.5              0
 0                 8.9
 0                 0

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

combine_firstpd.to_numeric()一起使用:

经过测试(添加了额外的字符串列):

df['Colz']=['abc',np.nan,'def',np.nan]
print(df)

   ColX ColY Colz
0  56.9  6.4  abc
1  67.5  NaN  NaN
2   NaN  8,9  def
3   NaN  NaN  NaN

df.combine_first(df.apply(lambda x: \
      pd.to_numeric(x,errors='coerce')).dropna(how='all',axis=1).fillna(0))

输出

   ColX ColY Colz
0  56.9  6.4  abc
1  67.5    0  NaN
2   0.0  8,9  def
3   0.0    0  NaN

编辑,用于获取浮点dtype并填充NaN:

m=df.select_dtypes('float').columns 
df.loc[:,m]=df.loc[:,m].fillna(0) 
print(df)

答案 1 :(得分:0)

使用df.select_dtype()

# fillna to float64 columns
ts = df.select_dtypes(include=['float64']).fillna(0) 

# merge data
df.join(ts, lsuffix="_").reindex(df.columns, axis=1)

答案 2 :(得分:0)

IIUC,

ObservableCollection<Libreria> items = new ObservableCollection<Libreria>(new Libreria().GetLibrerie());

            public Home()
            {
                InitializeComponent ();



                lstLibrerie.ItemsSource = items;
                //pickerLibrerie.ItemsSource = new Libreria().GetLibrerie();


            }

            public void Reload(Libreria newLib)
            {

                items.Insert(0, newLib);

            }