Python 将一系列值分配到特定位置的最有效方法

Python 将一系列值分配到特定位置的最有效方法,python,pandas,Python,Pandas,我有一个空的数据帧(df),一个(索引,列)对列表(pair\u list),和一个相应值列表(value\u list)。我想根据pair\u list将value\u list中的值分配到df中的相应位置。下面的代码是我目前正在使用的,但是速度很慢。有没有更快的方法 import pandas as pd import numpy as np df = pd.DataFrame(index=[0,1,2,3], columns=['a', 'b','c','d']) pair_list =

我有一个空的数据帧(
df
),一个(索引,列)对列表(
pair\u list
),和一个相应值列表(
value\u list
)。我想根据
pair\u list
value\u list
中的值分配到
df
中的相应位置。下面的代码是我目前正在使用的,但是速度很慢。有没有更快的方法

import pandas as pd
import numpy as np

df = pd.DataFrame(index=[0,1,2,3], columns=['a', 'b','c','d'])
pair_list = [(0,'a'),(1,'c'),(0,'d')]
value_list = np.array([3,2,4])
for pos, item in enumerate(pair_list):
    df.at[item] = value_list[pos]
代码的输出应为:

     a    b    c    d
0    3  NaN  NaN    4
1  NaN  NaN    2  NaN
2  NaN  NaN  NaN  NaN
3  NaN  NaN  NaN  NaN

一个想法是创建一个
多索引
,然后创建一个
系列
,通过以下方式重塑并添加缺少的列,索引值:


非常好,聪明的1+1
pair_list = [(0,'a'),(1,'c'),(0,'d')]
value_list = np.array([3,2,4])
mux = pd.MultiIndex.from_tuples(pair_list)

cols = ['a', 'b','c','d']
idx = [0,1,2,3]
df = pd.Series(value_list, index=mux).unstack().reindex(index=idx, columns=cols)
print (df)
     a   b    c    d
0  3.0 NaN  NaN  4.0
1  NaN NaN  2.0  NaN
2  NaN NaN  NaN  NaN
3  NaN NaN  NaN  NaN