Python 将numpy数组映射到数据帧会导致ValueError
假设我有一个带有key:array的字典,例如: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
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