繁体   English   中英

熊猫合并数据框

[英]Pandas merge data frames

我有一个数据框,其中有一个带有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

你可以用

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

只需将y_test分配给缺少的值即可。

df.loc[df['y'].isnull(), 'y'] = y_test

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM