我意识到您可以使用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在评论中解决了我的问题。
答案 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]