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