Python 中的条件数据插补
Conditional data imputation in Python
我正在尝试有条件地估算数据集中的值。
假设我有三列,如果第 1 列为 1,则第 2 列为 0,第 3 列为 0;如果第 1 列为 2,则第 2 列为 Mean (),第 3 列为 Mean()。
我尝试了 运行 带有函数 any() 的 if 语句并分别定义了条件。
但是根据条件没有满足条件,我得到的是所有平均值或所有零值。
具体代码如下:
if (df['Retention_Term'] == 6):
df.cl_tot_calls_term_seq_1.replace(999, np.nan,inplace = True)
df['cl_tot_calls_term_seq_1'].fillna(df['cl_tot_calls_term_seq_1'].median(),inplace= True)
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
像这样尝试。
mask1 = df['Retention_Term']==6
mask2 = df['cl_tot_calls_term_seq_1'] == 999
df.loc[mask1 & mask2, 'cl_tot_calls_term_seq_1'] = np.nan
那其他的应该就ok了。
df['cl_tot_calls_term_seq_1'].fillna(df['cl_tot_calls_term_seq_1'].median(), inplace= True)
我正在尝试有条件地估算数据集中的值。
假设我有三列,如果第 1 列为 1,则第 2 列为 0,第 3 列为 0;如果第 1 列为 2,则第 2 列为 Mean (),第 3 列为 Mean()。
我尝试了 运行 带有函数 any() 的 if 语句并分别定义了条件。
但是根据条件没有满足条件,我得到的是所有平均值或所有零值。
具体代码如下:
if (df['Retention_Term'] == 6):
df.cl_tot_calls_term_seq_1.replace(999, np.nan,inplace = True)
df['cl_tot_calls_term_seq_1'].fillna(df['cl_tot_calls_term_seq_1'].median(),inplace= True)
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
像这样尝试。
mask1 = df['Retention_Term']==6
mask2 = df['cl_tot_calls_term_seq_1'] == 999
df.loc[mask1 & mask2, 'cl_tot_calls_term_seq_1'] = np.nan
那其他的应该就ok了。
df['cl_tot_calls_term_seq_1'].fillna(df['cl_tot_calls_term_seq_1'].median(), inplace= True)