如何在熊猫中设置第一列和第一行作为索引?
Posted
技术标签:
【中文标题】如何在熊猫中设置第一列和第一行作为索引?【英文标题】: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 可能值得留下答案,因为您尚未接受任何当前答案?
【参考方案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。以上是关于如何在熊猫中设置第一列和第一行作为索引?的主要内容,如果未能解决你的问题,请参考以下文章
react-native-table-component 冻结可滚动表中的第一列和第一行
怎样在一条sql语句中将第一列和第二列加和的值作为第三列的值