【问题标题】:Pandas indexing and accessing columns by namesPandas 按名称索引和访问列
【发布时间】:2013-02-21 16:40:26
【问题描述】:

在使用特定列对 df 进行索引后,我尝试按列名访问 pandas 数据框,但它返回的列值不正确。

import pandas as pd
rs =pd.read_csv('rs.txt', header="infer", sep="\t",  names=['id', 'exp','fov','cycle', 'color', 'values'], index_col=2)

rs.cycle.head()

我在这里用'fov'索引df,我想访问'cycle'列,它给了我颜色列。我想我在这里遗漏了什么?


编辑 输入文件的前几行是:

6 3 1 G 0.96593 
6 3 1 O 0.88007 
6 3 1 R 0.94305 
6 3 2 B 0.90554 
6 3 2 G 0.93146

【问题讨论】:

  • 你能把rs.txt的前几行贴出来吗?
  • @mbatchkarov,这里有几行来自 rs.txt ` 6 3 1 G 0.96593 6 3 1 O 0.88007 6 3 1 R 0.94305 6 3 2 B 0.90554 6 3 2 G 0.93146`
  • 我将示例数据添加到您的原始问题中。你能检查我是否把换行符放在正确的地方吗?
  • @mbatchkarov,是的,谢谢,这是正确的格式,它不会让我在 5 次编辑后以上述格式发布!

标签: python indexing dataframe pandas


【解决方案1】:

我认为问题的出现是因为您的数据文件有 5 列,而您的 names 列表有 6 个元素。要验证,请检查id 列中的前几个值——如果我是对的,这些都将设置为6exp 列中的前几项将具有值 3

要解决这个问题,请像这样读取您的输入文件:

rs =pd.read_csv('rs.txt', header="infer", sep="\t",  names=['exp','fov','cycle', 'color', 'values'], index_col=2

Pandas 会自动插入行标识符。

【讨论】:

  • 文件中实际上有 6 列,第一列是空的,对应于 'id' 用于下游用途。我在之前的评论中没有指出这一点。
  • 我仍然认为 pandas 没有正确处理您的空列,您最终得到 5 列或 6 列,但向左移动了一列。请发布print rs.columnsprint rs的输出
  • 我发现了问题,文件末尾有一个不可见的选项卡导致了这个问题。我在最后一个选项卡的名称中添加了一个占位符,它现在按预期工作。感谢您的建议:)。
猜你喜欢
  • 2019-01-26
  • 2014-05-21
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
  • 2019-07-14
  • 2013-08-04
相关资源
最近更新 更多