【问题标题】:How do I set an unnamed column as the index?如何将未命名的列设置为索引?
【发布时间】:2018-02-10 11:33:08
【问题描述】:

在我找到的所有示例中,通常需要一个列名才能将其设置为索引

我想知道是否可以将空标题设置为索引,而不是进入 excel 添加列标题。该列包含我想要包含的所有值,但缺少列名:

我的脚本目前是:

import pandas as pd
data = pd.read_csv('file.csv')
data

【问题讨论】:

  • 你确定它没有列名吗?空字符串'' 可能是它的“名称”
  • 我尝试过使用:data = data.set_index(' ') But I get KeyError: ' '` 我也尝试过:data = data.set_index('') 但这也会导致错误
  • 你看过data.columns 说它叫什么了吗?
  • greg,我输入了data.columns,我得到了Index([' ', ' K37L', ' K37M', ' K37N', ' K37P', ' K37Q', ' K37R', ' K37S', ' K37T', ' K37U', ' K37V', ' K37W', ' K37X', ' K37Y', ' K37Z', ' K382', ' K383', ' K384', ' K385', ' K386', ' K387', ' K388', ' K389', ' K38A', ' K38B', ' K38C', ' K38D', ' K38E'], dtype='object')
  • 我将' ' 复制并粘贴到data.set_index() 中,但它仍然返回KeyError

标签: python-3.x pandas indexing


【解决方案1】:

你也可以只选择带有iloc的id列:

data = data.set_index(data.iloc[:, 0])

或者当你调用pd.read_csv()时,指定index_col

data = pd.read_csv('path.csv', index_col=0)

【讨论】:

    【解决方案2】:

    您不需要重命名 excel 中的第一列。在 pandas 中也一样简单:

    new_columns = data.columns.values
    new_columns[0] = 'Month'
    data.columns = new_columns
    

    之后,您可以设置索引:

    data = data.set_index('Month')
    

    【讨论】:

    • @kyle 的回答很简洁,但是当您收到以下错误“C:\Users\user\anaconda3\lib\site-packages\numpy\lib\arraysetops.py :569:FutureWarning:元素比较失败;改为返回标量,但将来将执行元素比较掩码 |= (ar1 == a)"。这个答案解决了这个问题。
    【解决方案3】:

    你可以这样做:

    import pandas as pd
    data = pd.read_csv('file.csv',index_col=0)
    data
    

    【讨论】:

    • 这可能是大多数人在寻找答案时所需要的。不错。
    • 这应该是直截了当的答案。
    【解决方案4】:

    当我遇到缺少名称的列时,Pandas 总是将它们命名为“未命名:n”,其中 n = ColumnNumber-1。即第一列的“未命名:0”,第二列的“未命名:1”等。所以我认为在您的情况下,以下代码应该很有用:

    # set your column as the dataframe index
    data.index = data['Unnamed: 0']
    # now delete the column
    data.drop('Unnamed: 0', axis=1, inplace=True)
    # also delete the index name which was 'Unnamed: 0' obviously
    del data.index.name 
    

    【讨论】:

    • 自 Pandas 1.0.3 以来,这不再可能,因为它会引发错误。相反,名称可以设置为无:data.index.name = None
    猜你喜欢
    • 1970-01-01
    • 2018-01-25
    • 2020-11-12
    • 1970-01-01
    • 2021-10-26
    • 2021-09-09
    • 2016-10-03
    • 1970-01-01
    • 2017-02-23
    相关资源
    最近更新 更多