在熊猫数据框中创建一列

时间:2020-07-10 16:54:08

标签: python-3.x pandas

我有一个熊猫数据框,如下所示:

import pandas as pd
import numpy as np
df = pd.DataFrame({'ORDER':["A", "A", "A", "A", "B","B"], 'A':[80, 23, np.nan, 60, 1,22], 'B': [80, 55, 5, 76, 67,np.nan]})
df

       ORDER    A        B
0       A       80.0    80.0
1       A       23.0    55.0
2       A       NaN     5.0
3       A       60.0    76.0
4       B       1.0     67.0
5       B       22.0    NaN

我要创建一列“新”,如下所示: 如果ORDER =='A',则new = df ['A'] 如果ORDER =='B',则new = df ['B']

这可以使用以下代码实现:

df['new'] = np.where(df['ORDER'] == 'A', df['A'],  np.nan)
df['new'] = np.where(df['ORDER'] == 'B', df['B'],  df['new'])

此处的调整是,如果ORDER的值不为“ B”,则数据框中将不存在B。因此,数据框可能如下所示。而且,如果我们在该数据框中使用上面的代码,则会出现错误,因为此数据框中缺少“ B”列。

       ORDER    A    
0       A       80.0
1       A       23.0
2       A       NaN  
3       A       60.0
4       A       1.0  
5       A       22.0

1 个答案:

答案 0 :(得分:1)

使用DataFrame.lookup,因此您不需要对df['B']进行硬编码,但是它会查询列值:

df['new'] = df.lookup(df.index, df['ORDER'])

  ORDER     A     B   new
0     A  80.0  80.0  80.0
1     A  23.0  55.0  23.0
2     A   NaN   5.0   NaN
3     A  60.0  76.0  60.0
4     B   1.0  67.0  67.0
5     B  22.0   NaN   NaN