在pandas数据帧中进行条件测试

时间:2013-10-13 22:39:39

标签: python pandas

有人可以帮我解决一个熊猫问题吗?我有一个时间序列数据框,如:

                       GOOG     AAPL
2010-12-09 16:00:00    591.50   551
2010-12-10 16:00:00    592.21   523
2010-12-13 16:00:00    594.62   578
2010-12-14 16:00:00    594.91   567
2010-12-15 16:00:00    590.30   577
...

我需要遍历每个时间戳并测试AAPL是否为> 570.如果是,那么我想打印该条目的AAPL的日期和价格。这可能吗?

2 个答案:

答案 0 :(得分:3)

不需要任何循环,pandas构建numpy的主要好处之一是它可以轻松地在整个列上运行。它很简单:

df['AAPL'][df['AAPL'] > 570]

输出:

2010-12-13  16:00:00    578
2010-12-15  16:00:00    577
Name: AAPL, dtype: int64

答案 1 :(得分:1)

啊哈,我明白了:

你可以做的是因为它是建立在numpy之上的是:

my_dataframe[my_dataframe.AAPL > 570]

你差不多完成了。 从这里您可以获得与AAPL相对应的所有行> 570,现在它只是打印出你需要的值:

valid_rows = my_dataframe[my_dataframe.AAPL > 570]
for row in valid_rows.to_records():
    print row[1],row[2]

dataframe.where可用于搜索整个帧。 我忘记了大熊猫很容易引用列。