猿问

给定数据框中的列重命名,因为该列包含循环中的数据

场景:我有一个数据框列表。我试图重命名列并更改其顺序,但是列名称不完全匹配,例如:列可能是“ iterationlist”或“ iteration”。


我尝试在一个循环内循环以读取所有列,如果名称包含我需要的内容,请更改该列的名称,但出现错误:


TypeError: unhashable type: 'list'

代码:


import pandas as pd

import os

from Tkinter import Tk

from tkFileDialog import askdirectory

from os import listdir

from os.path import isfile, join

import glob


# Get content

mypath = "//DGMS/Desktop/uploaded"

all_files = glob.glob(os.path.join(mypath, "*.xls*"))

contentdataframes = [pd.read_excel(f).assign(Datanumber=os.path.basename(f).split('.')[0].split('_')[0], ApplyOn='')

     for f in all_files]


#get list of dates and put to dfs


for dfs in contentdataframes:

    dfs.rename(index=str, columns={[col for col in dfs.columns if 'iteration' in col]: "iterationlistfinal"})

问题:执行此操作的正确方法是什么?


慕容708150
浏览 147回答 2
2回答

繁花如伊

旧的,但解决方案很简单dfs.rename(index=str, columns={col : "iterationlistfinal" for col in dfs.columns if 'iteration' in col} )您无法在字典中传递清单
随时随地看视频慕课网APP

相关分类

Python
我要回答