Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将if/else转换为np.where_Python_Pandas_Numpy_Fillna - Fatal编程技术网

Python 如何将if/else转换为np.where

Python 如何将if/else转换为np.where,python,pandas,numpy,fillna,Python,Pandas,Numpy,Fillna,我的代码在下面 将pd.to_numeric应用于本应为int或float但作为对象出现的列。我们可以像在哪里应用np那样将更多的转换成熊猫吗 if df.dtypes.all() == 'object': df=df.apply(pd.to_numeric,errors='coerce').fillna(df) else: df = df 使用selest\u数据类型分配一个简单的一行程序,该类型将重新分配现有列 df.assign(**df.select_dtypes('O

我的代码在下面

将pd.to_numeric应用于本应为int或float但作为对象出现的列。我们可以像在哪里应用np那样将更多的转换成熊猫吗

if df.dtypes.all() == 'object':
    df=df.apply(pd.to_numeric,errors='coerce').fillna(df)
else:
    df = df
使用selest\u数据类型分配一个简单的一行程序,该类型将重新分配现有列

df.assign(**df.select_dtypes('O').apply(pd.to_numeric,errors='coerce').fillna(df))
np.其中:

检查价格列示例:


等同于if/else的是df.mask

df[:] = (np.where(df.dtypes=='object',
          df.apply(pd.to_numeric,errors='coerce').fillna(df),df)
d = {'CusID': {0: 1, 1: 2, 2: 3},
     'Name': {0: 'Paul', 1: 'Mark', 2: 'Bill'},
     'Shop': {0: 'Pascal', 1: 'Casio', 2: 'Nike'},
     'Price': {0: '24000', 1: 'a', 2: '900'}}
df = pd.DataFrame(d)

print(df)
   CusID  Name    Shop  Price
0      1  Paul  Pascal  24000
1      2  Mark   Casio      a
2      3  Bill    Nike    900

df.to_dict()
{'CusID': {0: 1, 1: 2, 2: 3},
 'Name': {0: 'Paul', 1: 'Mark', 2: 'Bill'},
 'Shop': {0: 'Pascal', 1: 'Casio', 2: 'Nike'},
 'Price': {0: '24000', 1: 'a', 2: '900'}}
(df.assign(**df.select_dtypes('O').apply(pd.to_numeric,errors='coerce')
   .fillna(df)).to_dict())

{'CusID': {0: 1, 1: 2, 2: 3},
 'Name': {0: 'Paul', 1: 'Mark', 2: 'Bill'},
 'Shop': {0: 'Pascal', 1: 'Casio', 2: 'Nike'},
 'Price': {0: 24000.0, 1: 'a', 2: 900.0}}
df_out = df.mask(df.dtypes =='O', df.apply(pd.to_numeric, errors='coerce')
                                    .fillna(df))