python - 如何按 Pandas 数据框中的对象属性进行过滤

标签 python pandas

如何使用符号列进行过滤?符号列包含以下类型的对象:zipline.assets._assets.Equity
我可以使用以下方法打印符号:
print df.iloc[0][1].symbol

                        date               symbol   pension    mutual
0  2013-12-31 00:00:00+00:00  Equity(45971 [AAL])  14353441  27482858
1  2014-03-31 00:00:00+00:00  Equity(45971 [AAL])   9386708  46218086
2  2014-06-30 00:00:00+00:00  Equity(45971 [AAL])   8988341  61937025
3  2014-09-30 00:00:00+00:00  Equity(45971 [AAL])   9699814  77006037
4  2014-12-31 00:00:00+00:00  Equity(45971 [AAL])  12409152  81555692

最佳答案

你必须使用申请。这是一个玩具示例:

class Foo():
    def __init__(self, a):
        self.a = a
    def __repr__(self):
        return "Foo({})".format(self.a)

In [11]: df = pd.DataFrame([[Foo(1), 1], [Foo(1), 2], [Foo(2), 3]])

In [12]: df
Out[12]:
        0  1
0  Foo(1)  1
1  Foo(1)  2
2  Foo(2)  3

In [13]: g = df.groupby(df[0].apply(lambda x: x.a))  # Note: x is of type Foo

这些 Foo a属性是每个组的名称属性(键)。
因此我们可以使用它进行过滤:
In [14]: g.filter(lambda x: x.name == 1)
Out[14]:
        0  1
0  Foo(1)  1
1  Foo(1)  2

关于python - 如何按 Pandas 数据框中的对象属性进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34233094/

相关文章:

python - 将字符串列表 reshape 为行

python - 这段 python 代码中的文档字符串有什么用?

python - 按列扩展行,同时根据值操作其他行

python - 如何删除除日期列之外所有行均为 NaN 的位置?

python - 如何在循环中绘制来自多个文件的数据

python - 重复 pandas 数据帧的特定行

python - Pandas /Python : 2D histogram fails with value error

python - 从 Python argparse 中的数组/字典对象填充 add_arguments()

python - pdfkit-python : 'str' object has no attribute decode

python - 获取 pandas 列表列中元素频率的有效方法