我意识到您可以使用iloc
(例如inf1.iloc[:,3]
)返回第三列来按列编号选择数据。但是,当我尝试使用它来使用列来过滤行时,它不起作用。例如,如果列标题为摘要则inf2 = inf1[inf1.Summary == '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
,并希望与绿色在摘要栏内只返回行,运行一些进一步的分析之前。
尝试:
inf2 = inf1[inf1.Summary == 'GREEN']
创造我想要的东西,但 依赖于列名,可尽管数据列停留在相同的顺序此 文件的版本之间切换。尝试:
inf2 = inf1[inf1.iloc[:,3] == 'GREEN']
没有工作,解决方法:建议
inf2 = inf1[inf1[inf1.columns[2]] == 'GREEN']
做了,这解决了我的问题,这要归功于在评论@quapka。
什么'INF 2 = INF1 [INF1 [inf1.columns [2] == '绿色']'? – quapka
@quapka确实有效!谢谢。我显然需要额外的inf1,但我不明白为什么!非常感谢。 –
'inf1.columns [2]'获得'inf1'中第三列的名称。 'inf1 [inf1.columns [2]]'使用第三列的名称从'inf1'获取它,然后可以将它与'=='GREEN''进行比较,这会创建'True/False'的掩码(这可能不准确),然后用它从'inf1'获取正确的行。 – quapka