【问题标题】:Python loop to update multiple variablesPython循环更新多个变量
【发布时间】:2021-12-30 02:16:39
【问题描述】:

假设 a、b、c、d 都是预先存在的 pandas 数据帧。

我想创建一个循环,将这些数据帧中的每一个转换为 numpy 数组,然后打印一条消息,说明数组的形状(理想情况下是一条消息,如“数组'b'的形状是......”等)。 重要的是,我想为新的 numpy 数组重新使用原始变量名

我尝试了以下几种变体:

data = [a, b, c, d] 

for i in range (len(data)):
   data[i] = data[i].values
   print('The shape of array xx is' + str(data[i].shape))
   

上面的问题是,虽然它更新列表的内容,但原始数据帧本身(a,b,c,d)没有更新,我不确定如何从打印消息时的列表。我可能会编写一些后续代码,其中 a = data[0] 等,但这似乎效率低下。

我认为这应该很容易,但我没有太多运气搜索...... 提前致谢

【问题讨论】:

  • 你不能引用变量名,因为它是外部的。如果您希望保留变量名称,请将它们作为字符串键添加到字典中。此外,df.to_numpy().shape 也有效。此外,除非您使用就地修改,否则您无法更新数据本身,这不适用于数据框本身,而主要是数组。

标签: python loops multiple-variable-return


【解决方案1】:

不建议使用exec,但这回答了您的问题

for i in list("abcd"):
    exec(f'{i} = {i}.values')

另外,如果你想打印形状

for i in list("abcd"):
    exec(f'{i} = {i}.values')
    exec(f'shape = {i}.shape')
    print(f'The shape of array {i} is {shape}')

【讨论】:

    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 2015-02-06
    • 2019-03-05
    • 1970-01-01
    • 2021-01-02
    • 2016-03-07
    • 1970-01-01
    • 2018-03-28
    相关资源
    最近更新 更多