【问题标题】:Weird behaviour while manipulating Pandas dataframe within a dictionary在字典中操作 Pandas 数据框时的奇怪行为
【发布时间】:2021-11-30 09:58:26
【问题描述】:

我无法理解这种行为。我有一个数据框,它在字典 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']my_dict 内的数据框中产生了一个新列z

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

为什么我在my_dict 中没有看到new_x 列。怎么回事?

【问题讨论】:

    标签: python pandas dictionary iteration


    【解决方案1】:

    将分配更改为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}
    

    【讨论】:

    • 我想执行列重新排序 - val = val[['z', 'y']] ,使用就地建议将不起作用。无论哪种情况,我的问题是了解 z = x*y 工作和重命名不工作背后的原因。
    猜你喜欢
    • 2017-11-17
    • 2022-01-10
    • 1970-01-01
    • 2021-09-25
    • 2021-06-22
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    相关资源
    最近更新 更多