1

我有一个 pandas DataFrame,我正在尝试更改列的名称。在我更改名称之前,这些列是系列(应该是),但是在我更改名称之后,它们变成了 DataFrame,因此无法分组等等。给我带来问题的代码行是:

df.rename(columns = varDict, inplace = True)

我已经验证:

  • 无论我如何重命名,都会发生同样的事情;例如,rename_axis,替换为列表等。
  • df 是重命名前后的 DataFrame。
  • varDict 是一个格式正确的字典(就像我的其他字典一样),实际上确实成功地更改了列的名称。
  • 这些列是重命名之前的 Series,之后是 DataFrames。
  • 不幸的是,我无法在玩具示例中复制它。

关于我哪里出错的任何想法?我在 Mac OS X 上使用 python 2.7.5 和 pandas 0.12.0。提前致谢。完整代码如下。

import pandas as pd

def FileToDict(filename):
    with open(filename, 'rU') as f:
        l = [line[:-1] for line in f]
    return {x.partition(',')[0]:x.partition(',')[2] for x in l}

#---Preparing the dataset---

df = pd.DataFrame.from_csv('movieDataset.csv')
df = df.set_index(u'row')

#These dictionaries incorporate information for other files
varDict = FileToDict('varNum-to-varName.csv')
titleDict = FileToDict('titleNum-to-titleName.csv')

#Changes the datafile numbers into movie titles
df.datafile = df.datafile.apply(lambda x: titleDict[str(x)])

#Changes the variable numbers into recognizable names
varDict['row'] = 'row'
varDict['datafile'] = 'MovieTitle'
df.rename(columns = lambda x: varDict[str(x)], inplace = True)

#----------------
#At this point the columns become DataFrames rather than Series
#----------------
4

0 回答 0