Python 将numpy数组映射到数据帧会导致ValueError

Python 将numpy数组映射到数据帧会导致ValueError,python,pandas,numpy,Python,Pandas,Numpy,假设我有一个带有key:array的字典,例如: In[0]: arrs = { ...: 'a': np.array([1, 2, 3]), ...: 'b': np.array([4, 5, 6]) } 以及索引包含以下键的数据帧: In[1]: df = pd.DataFrame(index=list('abc'), columns = list('def')) ...: df Out[1]: d e f

假设我有一个带有key:array的字典,例如:

In[0]:  arrs = {
  ...:      'a': np.array([1, 2, 3]),
  ...:      'b': np.array([4, 5, 6])
        }
以及索引包含以下键的数据帧:

 In[1]:  df = pd.DataFrame(index=list('abc'), columns = list('def'))
   ...:  df
Out[1]:
        d   e   f
    a   NaN NaN NaN
    b   NaN NaN NaN
    c   NaN NaN Na
我想用数组字典中的值填充DataFrame

这项工作:

In[2]:  for idx in ['a', 'b']:
  ...:      df.loc[idx, :] = arrs[idx]
  ...:  df
Out[2]: 

            d   e   f  
       a    1   2   3  
       b    4   5   6  
       c    NaN NaN NaN  
这很好,但我想将操作矢量化。我尝试了我认为有效的方法:

In[3]:  df.loc[('a', 'b'), :] = df.loc[('a', 'b'), :].index.map(lambda x: arrs[x])
但这会导致
ValueError

ValueError: could not broadcast input array from shape (2) into shape (2,3)

为什么我的映射只计算数组的数量,而没有实际看到数组的形状

使用字典上的
DataFrame
构造函数,然后
update
第一个
DataFrame

import pandas as pd

df.update(pd.DataFrame.from_dict(arrs, orient='index', columns=['d', 'e', 'f']))
输出:
df

无法“矢量化”字典访问。Python字典值是逐个访问的。可能存在隐藏此类访问的代码,但它仍会逐步通过键(包括
map
)。还有一个例外-字典
keys()
items()
values()
生成列表生成器。
     d    e    f
a    1    2    3
b    4    5    6
c  NaN  NaN  NaN