从同一数据框中插入另一个切片的熊猫数据框切片

时间:2019-06-14 15:15:13

标签: python pandas dataframe

我有一个像这样的pandas.DataFrame

df = pd.DataFrame({'val_1': [np.nan, np.nan, np.nan, 2.34, 2.21, 2.45], 
                   'val_2': [3.1, 3.02, 3.67, np.nan , np.nan, np.nan], 
                   'group': [1, 1, 1, 2, 2, 2]})

df

    val_1   val_2  group
0   NaN     3.10    1
1   NaN     3.02    1
2   NaN     3.67    1
3   2.34    NaN     2
4   2.21    NaN     2
5   2.45    NaN     2

我想用NaN组中val_1列中的值填充属于1组的val_1中的2值。我尝试使用:

df.loc[df['group']==1, 'val_1'] = df.loc[df['group']==2, 'val_1'] 

我期望得到以下结果:

    val_1   val_2  group
0   2.34    3.10    1
1   2.21    3.02    1
2   2.45    3.67    1
3   2.34    NaN     2
4   2.21    NaN     2
5   2.45    NaN     2

但是我却得到了:

    val_1   val_2  group
0   NaN     3.10    1
1   NaN     3.02    1
2   NaN     3.67    1
3   2.34    NaN     2
4   2.21    NaN     2
5   2.45    NaN     2

如何正确执行该操作? 该解决方案需要扩展到更大的数据帧。 预先谢谢你!

1 个答案:

答案 0 :(得分:2)

通过添加.values

修复代码
df.loc[df['group']==1, 'val_1'] = df.loc[df['group']==2, 'val_1'].values
df
Out[300]: 
   val_1  val_2  group
0   2.34   3.10      1
1   2.21   3.02      1
2   2.45   3.67      1
3   2.34    NaN      2
4   2.21    NaN      2
5   2.45    NaN      2