我有一个 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
#----------------