【问题标题】:Cannot change column names after converting dict to Pandas dataframe.将 dict 转换为 Pandas 数据框后无法更改列名。
【发布时间】:2017-11-29 20:06:27
【问题描述】:

我是 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]

我有什么遗漏的吗?

非常感谢您的 cmets!

谢谢

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    • 非常感谢斯科特!现在可以了。我想我还有很多关于 Python 和 Pandas 的知识要学。
    • @macintosh81 不客气。感谢您的接受。
    猜你喜欢
    • 2022-08-11
    • 2017-04-01
    • 2021-08-07
    • 2021-10-15
    • 2013-08-03
    • 2019-09-27
    • 2017-08-22
    • 1970-01-01
    相关资源
    最近更新 更多