首页 > 解决方案 > 在字典中操作 Pandas 数据框时的奇怪行为

问题描述

我无法理解这种行为。我有一个数据框,它在字典中作为“值”存在my_dict

my_dict = {'a': pd.DataFrame({'x': [1], 'y': [2]})}
print(my_dict)
>>{'a':    x  y
        0  1  2}

现在,当我尝试对数据框进行数学运算时,它可以工作,但是在数据框上重命名的列不起作用 -

for key, val in my_dict.items():
    val['z'] = val['x'] * val['y']
    val = val.rename(columns = {'x': 'new_x'})
print(my_dict)
{'a':    x  y  z
0  1  2  2}

数学运算val['z'] = val['x'] * val['y']导致数据框中的新zmy_dict

但是列重命名操作val = val.rename(columns = {'x': 'new_x'})没有效果。

为什么我new_xmy_dict. 到底是怎么回事?

标签: pythonpandasdictionaryiteration

解决方案


将分配更改为inplace

for key, val in my_dict.items():
    val['z'] = val['x'] * val['y']
    val.rename(columns = {'x': 'new_x'},inplace=True)
    
my_dict
Out[26]: 
{'a':    new_x  y  z
 0      1  2  2}

推荐阅读