熊猫数据框访问中的两个条件检查

时间:2018-11-21 00:34:57

标签: python pandas dataframe

下面的命令可以正常工作

idx = np.asarray(df.loc[df['lat1'] != '.'].ix[:,0].index)

但是我正在尝试做这样的事情(有两个条件):

idx = np.asarray(df.loc[df['lat1'] != '.' and df['state'] == df['state'][0]].ix[:,0].index)

这将引发以下回溯:

Traceback (most recent call last):

  File "<ipython-input-274-c07cda0be195>", line 1, in <module>
    idx = np.asarray(df.loc[df['lat1'] != '.' and df['state'] == df['state'][0]].ix[:,0].index)

  File "/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py", line 1573, in __nonzero__
    .format(self.__class__.__name__))

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我已经查了一下,但是找不到适合这种情况的调整。任何线索将不胜感激。

[编辑]:根据以下建议,当我尝试这样做时:

df[(df['lat1']!='.') & (df['state']== df['state'][0])]

我明白了

        lat1    long1          ...          state                county
5    34  11          ...             AK             Anchorage
7    1 -3          ...             AK             Anchorage
14   1 -5          ...             AK             Anchorage
30   7 -3          ...             AK             Anchorage
44   1 -4          ...             AK             Anchorage
47   1 -3          ...             AK             Anchorage
75   1 -4          ...             AK                Juneau
82    5 -1          ...             AK       Kenai Peninsula
102  4 -1          ...             AK  Fairbanks North Star
106  4 -1          ...             AK     Matanuska Susitna
137  3 -3          ...             AK     Matanuska Susitna

[11 rows x 5 columns]

如何仅提取包含索引的第一列?

1 个答案:

答案 0 :(得分:1)

我很确定这个问题已经在某个地方被问到了……但是使用熊猫,您可以看到两个这样的情况。

df[(df['lat1']!='.') & (df['state']== df['state'][0])]

您必须进行按位运算