在 Python 中的函数内重命名与向 DataFrame 添加列

问题描述 投票:0回答:1

我有一个功能:

  1. 定义字典列表。每个字典中的一项是一个数据框。
  2. 然后向数据框添加一列
  3. 然后重命名同一数据框中的列
  4. 然后返回 (1) 中的列表

该函数如下所示:

def func():
    list1= [
             {"item":1, "df":pd.DataFrame(columns=["col1","col2"])},
             {"item":2, "df":pd.DataFrame(columns=["col1","col2"])}
           ]
    for dict1 in list1:
        df = dict1["df"]
        df["col3"] = np.nan # This works as intended
        df = df.rename(columns={"col1":"new_col1"}) # This doesn't work as intended
    
    return list1

当我查看结果时,df 有 col3 但没有 new_col1:

print(func()[0]["df"])

# Output:
Empty DataFrame
Columns: [col1, col2, col3]
Index: []

我不明白为什么会发生这种情况。根据我对范围的理解,新列的创建和重命名要么都应该进入,要么都不进入。为什么一个进入而不是另一个?

python pandas dataframe scope
1个回答
0
投票

为了持久化列名的改变,需要设置

inplace=True
:

df = df.rename(columns={"col1":"new_col1"}, inplace=True)

根据文档默认设置 inplace=False 这里

© www.soinside.com 2019 - 2024. All rights reserved.