You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用for循环为多个DataFrame选择指定列?修改不生效问题

问题原因

循环里的i = i[['Name','Color']]只是让循环变量i指向了一个新的DataFrame切片对象,并没有修改原有的puppy_df和kitty_df。因为Python for循环中的变量i是原DataFrame的临时引用,当你给i重新赋值时,只是断开了它和原对象的关联,原对象本身不会被改动,所以循环结束后原DataFrame毫无变化。

解决办法

方法一:通过索引修改列表元素

直接遍历列表的索引,把修改后的DataFrame重新赋值回列表对应的位置,之后可以从列表中取出更新后的对象:

my_list = [puppy_df, kitty_df]

for idx in range(len(my_list)):
    my_list[idx] = my_list[idx][['Name','Color']]

# 更新原变量
puppy_df = my_list[0]
kitty_df = my_list[1]

方法二:用字典存储并更新

把DataFrame放进字典,遍历字典的键来更新对应的值,再同步回原变量:

df_dict = {'puppy': puppy_df, 'kitty': kitty_df}

for key in df_dict:
    df_dict[key] = df_dict[key][['Name','Color']]

# 更新原变量
puppy_df = df_dict['puppy']
kitty_df = df_dict['kitty']

执行完任意一种方法后,再检查puppy_df.shape或kitty_df.shape,就能得到预期的(3, 2)结果。

内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:18:22