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

时间:2015-12-11 21:48:50

标签: 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

2 个答案:

答案 0 :(得分:1)

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

for (int x = 0; x < messages.length(); x++) {
    //Test if string delimiter is reached, if so, jump to next line.
    if(messages[x] == ';') {
        std::cout << "\n";
    }
    //Else just print the string:
    else {
        std::cout << messages[x];
    }
}

这些Foo 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 属性是每个组的名称属性(键) 因此我们可以使用它来过滤:

a

答案 1 :(得分:0)

使用Andy Hayden的答案中的Dataframe df,您也可以执行以下操作:-

<li>

您还可以通过执行以下操作按许多值过滤:-

In [13]: df[df[0].map(lambda x: x.a == 1)]
Out[13]:
       0  1
0  Foo(1)  1
1  Foo(1)  2