Python:从其他列中选择的列中获取值

Bar*_*ski 2 python dataframe pandas

我有DataFrame如下简单的:

df
   A   B    C err col
0  1  10  100   x   A
1  2  20  200   y   C
2  3  30  300   z   D
3  4  40  400   q   B
Run Code Online (Sandbox Code Playgroud)

我想创建df['result']具有:

  1. 中指定的列的值 col
  2. 从值err是否存在(第2行像d)无匹配
   A   B    C err col result
0  1  10  100   x   A      1
1  2  20  200   y   C    200
2  3  30  300   z   D      z
3  4  40  400   q   B     40
Run Code Online (Sandbox Code Playgroud)

Erf*_*fan 5

使用Series.where,Series.isin和DataFrame.lookup:

首先,我们创建一个名为的系列temp,它检查列名是否在colelse 中填充err。

然后我们使用lookup查找标签col并获取每行的值:

temp = df['col'].where(df['col'].isin(df.columns), other='err')
df['result'] = df.lookup(df.index, temp)
Run Code Online (Sandbox Code Playgroud)
   A   B    C err col result
0  1  10  100   x   A      1
1  2  20  200   y   C    200
2  3  30  300   z   D      z
3  4  40  400   q   B     40
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你!正如预期的那样工作。 (2认同)