<p>没有for循环:</p>
<pre><code>import pandas as pd
from io import StringIO
df2 = pd.read_table(StringIO(""" name Desgn Emp_number Salary
0 krul nan 125796 45000
1 arnold lawyer 789632 25000
2 daisy engg 256498 nan
3 alex nan 456985 65884
4 mandy arch 456258 36958
5 krul painter nan nan
6 perry nan 789632 nan
7 timu lawyer nan nan
8 timy lawyer 789632 69822
9 daisy engg nan nan
10 daisy engg 256498 54869"""), sep='\s+')
df1 = pd.read_table(StringIO(""" ColumnName Nullable
0 name True
1 Desgn True
2 Emp_number False
3 Salary True"""), sep='\s+')
# Transpose switches dtype, so we need to know what they were originally
a = df2.T.loc[df1.loc[df1.Nullable==True, 'ColumnName']].T
a = a.astype(df2[a.columns].dtypes.to_dict())
# Replace with median
df2[a.columns] = a.fillna(a.median())
# If any null in non nullable, raise ValueError
non_nullable_has_null = df2.T.loc[df1.loc[df1.Nullable==False, 'ColumnName']].T.isnull().any().any()
if non_nullable_has_null:
raise ValueError('non nullable has a null')
</code></pre>