【问题标题】:Rename unnamed column pandas dataframe重命名未命名的列熊猫数据框
【发布时间】:2014-11-23 18:37:09
【问题描述】:

我的 csv 文件没有第一列的列名,我想重命名它。通常,我会使用data.rename(columns={'oldname':'newname'}, inplace=True),但 csv 文件中没有名称,只有 ''。

【问题讨论】:

  • 这个 csv 是如何生成的?如果它是从 pandas 导出的,则有时表明第一列是索引。在这种情况下,您可以在阅读时告诉 pandas pd.read_csv('file.csv', index_col=[0])

标签: python pandas csv


【解决方案1】:

这应该可行:

data.rename( columns={0 :'Articles'}, inplace=True )

【讨论】:

    【解决方案2】:

    通常空白列名是根据它们的索引命名的

    例如,假设第 4 列未命名。

    df.rename({'unnamed:3':'new_name'},inplace=True)
    

    通常它是这样命名的,因为列的索引从零开始。

    【讨论】:

      【解决方案3】:

      第一列/行可能没有名称,因为它是索引而不是列/行。这就是为什么你需要像这样重命名索引:

      df.index.name = 'new_name'
      

      【讨论】:

      • +1 bc 我搜索了一种方法来做到这一点无济于事 - 当你想要做的只是复制/粘贴到 excel 时真的很方便。来吧python,默认情况下,一切都应该有一个名字!
      【解决方案4】:

      试试下面的代码,

      df.columns = [‘A’, ‘B’, ‘C’, ‘D’]

      【讨论】:

      • 最好最简单的解决方案!
      【解决方案5】:

      解决方案可以改进为data.rename( columns={0 :'new column name'}, inplace=True )。无需使用'Unnamed: 0',只需使用列号,在本例中为0,然后提供'new column name'

      【讨论】:

      • 在 Pandas 1.0.3 中,通过带有索引键的字典重命名列似乎不起作用。它只适用于行。
      • 事实上,我认为它只对行有效,因为实际的 DataFrame 索引使用顺序整数作为行名。
      【解决方案6】:

      您可以使用查看当前数据框 data.head()

      如果返回 'Unnamed: 0' 作为列标题,您可以按以下方式重命名:

      data.rename( columns={'Unnamed: 0':'new column name'}, inplace=True )
      

      【讨论】:

      • 当我打印 DataFrame 时,我的列没有名称,它只显示第 0 列,我使用了这种技术,它对我没有帮助,您能否建议任何其他方法来替换名称
      【解决方案7】:

      当你加载 csv 时,使用选项 'index_col' 就像

      pd.read_csv('test.csv', index_col=0)
      

      index_col : int 或 sequence 或 False,默认 None 列用作 DataFrame 的行标签。如果给定一个序列,则 MultiIndex 用来。如果您的文件格式不正确,文件末尾带有分隔符 每一行,您可能会考虑 index_col=False 来强制 pandas 使用第一列作为索引(行名)

      http://pandas.pydata.org/pandas-docs/dev/generated/pandas.io.parsers.read_csv.html

      【讨论】:

        【解决方案8】:

        它有一个名字,名字就是''(空字符串)。

        In [2]: df = pd.DataFrame({'': [1, 2]})
        
        In [3]: df
        Out[3]: 
        
        0  1
        1  2
        
        In [4]: df.rename(columns={'': 'A'})
        Out[4]: 
           A
        0  1
        1  2
        

        【讨论】:

        • 您需要 inplace=True 才能直接更改 df。 df.rename(columns={'': 'A'}, inplace=True)
        • 我尝试使用inplace = True,结果返回空白数据框,不知道是怎么回事,有没有其他解决办法??
        • 以防有人需要这个:在 pandas 0.23.4 中,我需要使用 .rename(columns={'Unnamed: 0': 'id'}) 重命名第一个未命名的列
        猜你喜欢
        • 2017-01-26
        • 1970-01-01
        • 2018-11-30
        • 2021-02-03
        • 2017-10-14
        • 2017-12-19
        • 2018-08-16
        • 2019-11-01
        • 2021-08-15
        相关资源
        最近更新 更多