【问题标题】:How to set in pandas the first column and row as index?如何在熊猫中设置第一列和第一行作为索引?
【发布时间】:2016-08-05 01:15:56
【问题描述】:

当我读入 CSV 文件时,我可以说 pd.read_csv('my.csv', index_col=3) 并将第三列设置为索引。

如果我在内存中有 pandas 数据框,我该怎么做?我怎么能说将第一行也用作索引?第一列和第一行是字符串,矩阵的其余部分是整数。

【问题讨论】:

  • 对不起,你在set_index之后吗?这会将一列设置为行的索引,您必须直接覆盖索引df.index = df.iloc[0].values 请注意,行长度需要与您的 df 中的当前行数相匹配
  • 谢谢 EdChum,您的回答对我帮助很大。就我而言,它不是 df.index,而是 df.columns。对于我需要使用 set_index 的行。谢谢。
  • @Oli 可能值得留下答案,因为您尚未接受任何当前答案?

标签: python python-3.x pandas


【解决方案1】:

也许试试 set_index()?

df = df.set_index([2])

【讨论】:

  • set_index 需要列标签。如果您的第三列有名称,这将引发 KeyError
  • 为了完整起见:如果列有非数字索引,则必须将数字替换为所述非数字索引,例如,df = df.set_index(['two' ])。
【解决方案2】:

按照详细程度递增的顺序将第一(或第 n)列作为索引:

df.set_index(list(df)[0])
df.set_index(df.columns[0])
df.set_index(df.columns.tolist()[0])

将第一行(或第 n 行)设为索引:

df.set_index(df.iloc[0].values)

如果你想要一个多级索引,你可以同时使用:

df.set_index([df.iloc[0], df.columns[0]])

请注意,使用列作为索引将自动将其作为列删除。使用行作为索引只是一个复制操作,不会从 DataFrame 中删除该行。

【讨论】:

    【解决方案3】:

    不管有多少行,你都可以试试这个

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

    【讨论】:

    • 这其实是最简单的解决方案。
    • 同意,这是使用 CSV 文件时的最佳解决方案
    • 问题已经提到了这一点,并专门要求内存中的DataFrames。
    【解决方案4】:

    也许可以试试df = pd.read_csv(header = 0)

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2022-06-13
    • 2020-02-22
    • 2021-08-28
    • 2020-09-26
    • 2018-09-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多