熊猫:根据索引列获取值

War*_*x56 1 python pandas

我有一个像这样的 pd 数据框:

df = pd.DataFrame({'val':[0.1,0.2,0.3,None,None],'parent':[None,None,None,0,2]})

   parent  val
0     NaN  0.1
1     NaN  0.2
2     NaN  0.3
3     0.0  NaN
4     2.0  NaN
Run Code Online (Sandbox Code Playgroud)

其中parent表示熊猫 df 中的索引。我想创建一个具有值或父值的新列。

看起来像这样:

   parent  val  val_full
0     NaN  0.1       0.1
1     NaN  0.2       0.2
2     NaN  0.3       0.3
3     0.0  NaN       0.1
4     2.0  NaN       0.3
Run Code Online (Sandbox Code Playgroud)

这是一个相当大的数据帧(10k+ 行),因此最好使用一些有效的方法。我怎么能不使用类似的东西来做到这一点.iterrows()

WeN*_*Ben 5

在你的情况下

df['new'] = df.val
df.loc[df.new.isna(),'new'] = df.loc[df.parent.dropna().values,'val'].values
df
Out[289]: 
   val  parent  new
0  0.1     NaN  0.1
1  0.2     NaN  0.2
2  0.3     NaN  0.3
3  NaN     0.0  0.1
4  NaN     2.0  0.3
Run Code Online (Sandbox Code Playgroud)

或尝试fillnareplace

df['new'] = df.val.fillna(df.parent.replace(df.val))
Out[290]: 
0    0.1
1    0.2
2    0.3
3    0.1
4    0.3
Name: val, dtype: float64
Run Code Online (Sandbox Code Playgroud)