Pandas按编号选择列进行分析

时间:2016-12-19 15:15:28

标签: python pandas

我意识到您可以使用iloc(例如inf1.iloc[:,3])返回第三列,按列号选择数据。但是,当我尝试使用它来使用列来过滤行时,它不起作用。例如,如果列标题为摘要,则inf2 = inf1[inf1.Summary == 'GREEN']会在“摘要”列中创建包含 GREEN 的所有行的数据集, 但inf2 = inf1[inf1.iloc[:,3] == 'GREEN']没有。任何帮助深表感谢。我怀疑我错过了一些明显的东西。

更清楚的是,我导入了一个大型的csv文件。

Station ID, Unnamed:1, Summary, Fault, Unnamed: 4 etc etc
558656,     New Lane,  GREEN,   NO,    11000
558656,     New Lane,  AMBER,   NO,    11000
558656,     New Lane,  RED,     NO,    11000
558656,     New Lane,  GREEN,   NO,    11000

希望在进行进一步分析之前,只在摘要列中返回 GREEN 的行。

  • 尝试:inf2 = inf1[inf1.Summary == 'GREEN']创造了我想要的东西但是 依赖于列名,可以在此版本之间进行更改 尽管数据列保持相同的顺序,但文件仍然存在。

  • 尝试:inf2 = inf1[inf1.iloc[:,3] == 'GREEN']无效,

  • 解决方案:建议的inf2 = inf1[inf1[inf1.columns[2]] == 'GREEN'] 感谢@quapka在评论中解决了我的问题。

1 个答案:

答案 0 :(得分:0)

你的方法应该有效;必须有其他事情发生。这是一个可重复的示例,按预期工作:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))

df[df.iloc[:,3]>40]