如何使用值,索引和列的数组更新熊猫数据框?

时间:2019-04-21 15:28:06

标签: python pandas

我的数据框很大,想更新已知行和列索引中的特定值。我想在没有显式for循环的情况下执行此操作。

例如:

import string                                                                                                                                  
import numpy as np                                                                                                                             
import pandas as pd                                                                                                                            
df = pd.DataFrame(np.random.rand(10, 10), index = range(10), columns = list(string.ascii_lowercase)[:10])    

我想使用任意索引数组,列和值来更新df。例如:

update_values = [0,-2,-3]                                                                                                                       
update_index = [3,5,7]                                                                                                                          
update_columns = ["d","g","i"]     

我可以遍历数组以更新原始数据帧:

for i,j,v in zip(update_index, update_columns, update_values): 
    df.loc[i,j] = v 

但想使用一种不涉及显式for循环的技术。

2 个答案:

答案 0 :(得分:2)

使用基础的numpy

indexes = map(df.columns.get_loc, update_columns)
df.values[update_index, list(indexes)] = update_values

答案 1 :(得分:0)

尝试使用loc来指定所需的索引和列名称loc [[index_names],[columns_names]]

df.loc[[3,5,7], ["d","g","i"]] = [0,-2,-3]