【问题标题】:How can merge header column in python?如何在python中合并标题列?
【发布时间】:2019-10-20 02:49:22
【问题描述】:

我已经使用 read_html 和 pandas 库阅读了一个网址“https://simple.wikipedia.org/wiki/List_of_U.S._states”:

但我在合并标题单元格时遇到问题,如下图标记

我想将标题的行或列合并到它们以实现上述格式和相同的格式保存在 csv 文件中。

表示相同格式https://simple.wikipedia.org/wiki/List_of_U.S._states 使用 to_csv 存储在 CSV 文件中

【问题讨论】:

    标签: python numpy csv data-science


    【解决方案1】:

    首先,开始的 df 是一个列表。要将其制成数据框,您可以使用:

    df=df.concat(df)
    type(df) # Returns pandas.core.frame.DataFrame
    type(df.columns) # Returns pandas.core.indexes.multi.MultiIndex
    

    您的标题是一个多索引对象。这是一些参考https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.MultiIndex.html。 当我们打印列时,我们得到:

    print(df.columns)
    

    输出:

    MultiIndex([(                        'Name',                         'Name'),
            (      'postal abbreviation[1]',       'postal abbreviation[1]'),
            (                      'Cities',                      'Capital'),
            (                      'Cities',                   'Largest[5]'),
            (  'Established[upper-alpha 1]',   'Established[upper-alpha 1]'),
            ('Population[upper-alpha 2][3]', 'Population[upper-alpha 2][3]'),
            (               'Total area[4]',                          'mi2'),
            (               'Total area[4]',                          'km2'),
            (                'Land area[4]',                          'mi2'),
            (                'Land area[4]',                          'km2'),
            (               'Water area[4]',                          'mi2'),
            (               'Water area[4]',                          'km2'),
            (              'Numberof Reps.',               'Numberof Reps.')],
           )
    

    我们的专栏有两个层次:

    print(df.levels)
    

    输出:

    [['Cities', 'Established[upper-alpha 1]', 'Land area[4]', 'Name', 'Numberof Reps.', 'Population[upper-alpha 2][3]', 'Total area[4]', 'Water area[4]', 'postal abbreviation[1]'], ['Capital', 'Established[upper-alpha 1]', 'Largest[5]', 'Name', 'Numberof Reps.', 'Population[upper-alpha 2][3]', 'km2', 'mi2', 'postal abbreviation[1]']]
    

    您可以将列标题替换为:

    Index=[('Name', ''),('postal abbreviation[1]',''),('Cities',                    'Capital'),('Cities','Largest[5]'), ('Established[upper-alpha 1]',''),('Population[upper-alpha 2][3]', ''),('Total area[4]','mi2'),('Total area[4]', 'km2'),('Land area[4]','mi2'),('Land area[4]','km2'),('Water area[4]','mi2'),('Water area[4]','km2'),('Numberof Reps.',' ')]
    index = pd.MultiIndex.from_tuples(Index)#To make it into a MultiIndex item
    df.columns=index
    

    所以现在如果你运行命令

    print(df)
    

    你会得到你想要的结果!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      相关资源
      最近更新 更多