gpt4 book ai didi

python - Pandas 是将一系列值分配给特定位置的最有效方法

转载 作者:行者123 更新时间:2023-12-01 00:27:01 25 4
gpt4 key购买 nike

我有一个空的 pandas 数据框 (df)、一个(索引、列)对列表 (pair_list) 以及一个相应值列表 ( value_list)。我想根据pair_listvalue_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

最佳答案

一个想法是通过 MultiIndex.from_tuples 创建一个 MultiIndex ,然后创建一个系列,通过 Series.unstack reshape 并添加缺失的列,索引值按DataFrame.reindex :

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

关于python - Pandas 是将一系列值分配给特定位置的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58499385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com