如何在 for-loop 期间更改多列 headers,其中附加列有 .globe()?

How to change multiple column headers during for-loop which append columns with .globe()?

我试图从各种 .csv-files 中追加一个具有完全相同的列 header 和结构的特定列。追加到目前为止效果很好,但我想更改 headers 列以了解哪个是哪个日期。我在 for-loop:

中以这种方式尝试过
path = r'C:\Users\....\Daten'
all_files = glob.glob(path + "/*.csv")
    
#create empty list 
li = []

# append future index to list
df0 = pd.read_csv(r'C:\ .... \Daten\RKI_Corona_Landkreise_20210320.csv')
li.append(df0["RS"])

# append future index to list
for filename in all_files:
    df = pd.read_csv(filename)
    # create String from filename and split it to the date
    base = os.path.splitext(os.path.basename(filename))[0]
    base = base.split('_')
    base = base[3]
    df.rename(columns={"cases7_lk": "cases7_lk_" + base})
    li.append(df["cases7_lk"])

incidences_complete = pd.concat(li, axis=1)
incidences_complete = incidences_complete.set_index("RS")
incidences_complete

输出仍然是这样的:https://i.stack.imgur.com/BKNKs.png

我没有找到确切的问题,但将问题隔离到 DataFrame 的重命名。在 for-loop 之外它工作正常,但在 for-loop 内部没有任何反应。在重命名之前,我还尝试使用将旧列 header 与 base 组合在一起的新字符串变量。附加其他列和非常简单的词典也不起作用。

希望你能帮助我。谢谢!

此处的问题出在您的 df.rename 函数上。默认情况下,此函数 returns 重命名的数据框需要分配给新变量。您有两个选择:

  1. 将当前数据帧替换为
df = df.rename(columns={"cases7_lk": "cases7_lk_" + base})
  1. 使用添加参数inplace=True 更新当前数据帧
df.rename(columns={"cases7_lk": "cases7_lk_" + base},
       inplace=True)