我的数据框很大,想更新已知行和列索引中的特定值。我想在没有显式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循环的技术。
答案 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]