【发布时间】:2014-01-13 04:31:16
【问题描述】:
我对 pandas 如何使用过滤行有些困惑。 假设我们有这个市场数据数据框'df':
Time Open High Low Close Volume
31.12.2003 23:00:00.000 82440 83150 82440 82880 47686.32
01.01.2004 23:00:00.000 82830 83100 82350 83100 37571.04
02.01.2004 23:00:00.000 83100 83100 83100 83100 0.00
现在我们过滤行以仅获取市场开放日的 df (Volume>0)
df=df[df['Volume']>0]
由于我们过滤数据框的方式,有一些空行仍然有索引和值,但它们不用于计算,例如,如果我们这样做:
df.mean()
过滤后的行的值不会出现在计算中。
令人困惑的部分来了:
我们如何仅使用未过滤的值来计算从第 3 行开始计数的最后 2 个值的平均值? 意思是,如果我们过滤掉第 2 行,它应该得到第 3 行和第 1 行的平均值。
----------- 编辑 -------------- 嘿,感谢您的评论,试图更清楚:
假设我们有这个示例数据框:
Index Volume
0 1
1 0
2 1
3 1
然后我们过滤它:
df=df[df['Volume']>0]
如果我们将数据帧发送到 numpy,以便在数据帧中进行绘图或工作迭代,它还会发送我们不想要的行。
如果我们迭代该数据,它也会迭代(并考虑)我们排除的索引。
那么,我们如何获取排除排除行的数据帧副本,以避免这两个问题?
【问题讨论】:
-
你能提供更多关于你期望得到什么的细节吗?你的措辞太模棱两可了。
-
我正在研究 ipython 以获得我的意思的工作示例,一旦我找到它就会发布。我意识到这还不清楚
-
为什么你认为它会通过排除的行?前任在您的最后一个示例中,
df[df['Volume']>0].values将是一个形状为 (3, 1) 的数组。 -
因为我使用这样的数据框进行绘图,我得到了这个:i.imgur.com/IMzT6TS.png 所以即使它们被排除在数据框中,它也会从数据框中得到排除的索引。 (烛台之间的空间被排除在外,但它们仍然以这种方式显示)
-
这不是行而是索引。您可能只想简单地执行
df = df.reset_index(drop=True)来重新索引您的数据框。