提问人:noabh 提问时间:9/6/2022 更新时间:9/6/2022 访问量:175
为什么我不能使用 map 编辑全局变量?
Why can't I edit a global variable using map?
问:
我目前正在处理从一个 到 几个 numpy 矩阵的数据。为此,我首先将矩阵创建为全局变量,然后遍历逐行和逐个观察填充矩阵观察值的列。pd.DataFrame
我正在使用一个我在 for 循环中定义自己的函数来实现这一点。map()
但是,矩阵总是结果为空(与初始化状态相同)。这不是因为局部与全局范围的问题,因为我正确地包含了关键字和关键字。global
nonlocal
我认为这与 有关,因为我的函数在 for 循环中工作正常。当我使用时,问题仍然存在。map()
itertools.accumulate
我的问题是:为什么我不能使用 map 更改全局变量,以及我还能如何做到这一点,最好是使用 map 等其他函数。
下面的代码旨在代表我正在尝试做的事情。我之所以使用如此复杂的方法,是因为我的实际 DataFrame 具有非常复杂的结构。我在下面的代码中特意简化了数据帧。
d = {0: [0,0,0,0], 1: [1,2,3,4], 2: [2,4,6,8], 3:[3,6,9,12]}
myData = pd.DataFrame(data=d)
# global matrix
M = np.zeros((4,4),int)
def foo(r,c,value):
global M
M[r,c] = value
### DOESN'T work
for r, r_data in myData.iterrows():
cols = r.index()
map(lambda c, r=r, value=myData[r,c]: foo(r, c, value),cols)
### WORKS
for r, r_data in myData.iterrows():
cols = r.index()
for c in colds:
foo(r, c, myData[r,c])
这是我在 Stackoverflow 上的第一个问题;我希望我足够清楚!
答: 暂无答案
上一个:R 中多列的 If 语句
评论
map
global M
foo
M
for
map
map
for