将dict转换为Pandas数据帧后无法更改列名。

时间:2017-06-26 21:25:08

标签: python-3.x pandas dictionary dataframe rename

我是Python和Pandas的新手。我试图将字典转换为数据框。我原来的字典是一个关键,后面是列表长度不均匀。 该词典如下:

      {'PlaceA': [(1992, 2015)], 'PlaceB': [(1980, 1984), (1988, 1991)], 'PlaceC': [(1985, 1987)]}

要将此转换为df,我使用

d = pd.DataFrame.from_dict(city_dict, orient='index')

它工作正常并产生如下结果的df:

                                     0                1
    PlaceA                     (1992, 2015)          None
    PlaceB                     (1980, 1984)    (1988, 1991)
    PlaceC                     (1985, 1987)          None

虽然我可以使用

轻松重命名列
d.rename(columns={0:'new column name'})

我无法重命名第一列的名称(地名)。我尝试使用

d.rename(columns={'':'place'}, inplace=True)

但它不起作用。 奇怪的是,当我尝试打印标题时,我得到以下输出

print(list(d.columns.values))

[0, 1]

我有什么遗漏的吗?

非常感谢您的评论!

由于

1 个答案:

答案 0 :(得分:1)

第一列'不是一个专栏;它是index。您可以使用以下命名来命名:

df.index.name = 'Place Name'

                       0             1
Place Name                            
PlaceC      (1985, 1987)          None
PlaceB      (1980, 1984)  (1988, 1991)
PlaceA      (1992, 2015)          None

或者您可以使用以下命令将该索引转换为列:

d = d.reset_index()
d.rename(columns={'index':'Place Name'}

  Place Name             0             1
0     PlaceC  (1985, 1987)          None
1     PlaceB  (1980, 1984)  (1988, 1991)
2     PlaceA  (1992, 2015)          None