繁体   English   中英

在 Pandas 数据框中重命名时链接在一起的两列

[英]Two columns linked together when renaming in Pandas dataframe

我有一个问题,我的数据框的两列似乎链接在一起。 我需要通过索引(在下面的代码中)指定要重命名为“Project”的第二列,因为它没有列标题,但对于某些文件,它似乎导致没有标题的下一列也被重命名为“Project” . 当我尝试在结果数据集中按索引删除该列时,数据集中的两列都被删除。

df = df.rename(columns={df.columns[2]: "项目"}

它似乎对我拥有的某些数据文件执行此操作,但对其他数据文件没有执行此操作,因此尚不清楚问题出在哪里或是否由我的代码引起。

数据集将如下所示:

分类 | 分类 | 项目.... | MTD 预算 | 项目

dfs=[]

for i in range(12):
    print (i)
    df = pd.read_excel(files[i],sheet_name = sheet,header = None, usecols=range(1,16))

for row in range(df.shape[0]): 

    for col in range(df.shape[1]):

        if df.iat[row,col] == 'Classification':
            row_start = row
            break
df = df.loc[row_start:]

new_header = df.iloc[0] #grab the first row for the header
df = df[1:] #take the data less the header row
df.columns = new_header #set the header row as the df header

df['Region'] = sheet
df['File'] = files[i].rsplit('/',1)[1]
df['Period'] = files[i].rsplit('Overview - ',1)[1][:-5]


df = df.dropna(axis='columns',how='all')
df = df.dropna(axis='index',how='all')

df = df.rename(columns={df.columns[2]: "Project"})
df = df.loc[:, df.columns.notnull()]

df['Classification'] = df['Classification'].fillna(method='ffill')
df['Category'] = df['Category'].fillna(method='ffill')

dfs.append(df)

IIUC,这个黑客会做:

col_to_change = 2
df.columns = (list(df.columns[:col_to_change]) +
              ['Project'] + 
              list(df.columns[col_to_change+1:]
             )

或者:

df.columns = [col if i!=col_to_change else 'Project' 
                  for i,col in enumerate(df.columns.to_list()) ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM