使用一组子列分配新列

时间:2018-10-18 02:43:29

标签: python arrays pandas numpy

我有一个数据框,其格式为['A','B','C',A','B','B'....]的列'name'和一组数组:对应于'A'的一个,例如array_A = [0,1,2 ...]和array_B = [3,1,0 ...],array_C等... 我想通过分配array_A来创建新的列“ value”,其中dataframe中的行名称为“ A”,类似地为“ B”和“ C”。

函数df['value']=np.where(df['name']=='A',array_A, df['value'])不会执行此操作,因为它将覆盖其他名称的值或存在维数问题。

例如:

arrays = {'A': np.array([0, 1, 2]),
          'B': np.array([3, 1])}

所需的输出:

df = pd.DataFrame({'name': ['A', 'B', 'A', 'A', 'B']})

  name  value 
0    A      0 
1    B      3  
2    A      1  
3    A      2  
4    B      1  

1 个答案:

答案 0 :(得分:1)

您可以将for循环与字典一起使用:

arrays = {'A': np.array([0, 1, 2]),
          'B': np.array([3, 1])}

df = pd.DataFrame({'name': ['A', 'B', 'A', 'A', 'B']})

for k, v in arrays.items():
    df.loc[df['name'] == k, 'value'] = v

df['value'] = df['value'].astype(int)

print(df)

  name  value
0    A      0
1    B      3
2    A      1
3    A      2
4    B      1