我有一个数据框,其中我有一个带有nan值的列
我过滤了它们:
X_train = data[np.isnan(data[column]) == False].drop(column, 1)
y_train = data[np.isnan(data[column]) == False][column]
X_test = data[np.isnan(data[column]) == True].drop(column, 1)
y_test = data[np.isnan(data[column]) == True][column]
然后使用一些复杂的算法我预测y_test值。然后我想以正确的顺序合并这些DataFrame。例如:
X, y
1, 1
12, nan
2, 3
5, nan
7, 34
y_test将有2个值。例如,在算法结束后y_test == [2, 43]
然后我想创建以下DataFrame:
X, y
1, 1
12, 2
2, 3
5, 43
7, 34
答案 0 :(得分:1)
您可以使用
mask = np.isnan(data[column])
data.loc[mask, column] = [2, 43]
将值分配给原始DataFrame,data
:
import numpy as np
import pandas as pd
nan = np.nan
data = pd.DataFrame({'X': [1, 12, 2, 5, 7], 'y': [1.0, nan, 3.0, nan, 34.0]})
column = 'y'
mask = np.isnan(data[column])
X_train = data[~mask].drop(column, axis=1)
y_train = data.loc[~mask, column]
X_test = data[mask].drop(column, axis=1)
y_test = data.loc[mask, column]
data.loc[mask, column] = [2, 43]
print(data)
产量
X y
0 1 1
1 12 2
2 2 3
3 5 43
4 7 34
答案 1 :(得分:1)
只需将y_test
分配给缺失的值。
df.loc[df['y'].isnull(), 'y'] = y_test