python - 使用一组子列分配新列

标签 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 来创建一个新列“值”,其中数据帧中的行名称为“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  

最佳答案

您可以将 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

关于python - 使用一组子列分配新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52866212/

相关文章:

c - 在 C 中使用指针提取数组的一部分

c - 在c中打开文件并打印到文件

python - 某些列的唯一值,DF pandas

python - mysqlclient偶尔崩溃,建立TLS连接

python - 如何在字符串中包含\作为正则表达式 python 的模式

python - py.test Remote 有问题

c++ - 指针和字符串有什么区别?

python - 如何确定 Pandas 列中的值 'stability'?

python-3.x - 如何计算连续超过 1 个字符的大写单词的数量

PYTHON - BEAUTIFULSOUP 如何将空 TD(表数据)刮取为空值而不是跳过它