Python字母数字和字符比较

时间:2019-02-03 02:58:59

标签: python pandas jupyter data-analysis

我有一个CSV数据集,我试图选择“ INCOME”列等于“ <= 50K”或“> 50K”的所有行

这是我有什么,但它没有任何行只返回列名。

df.loc[df.INCOME == '>50K',:]

我的代码基本上说选择所有行“DF”的数据集的收入列等于“> 50K”

请帮忙吗?

2 个答案:

答案 0 :(得分:2)

您可以使用

df.INCOME=df.INCOME.str.strip()
df.loc[df.INCOME == '>50K',:]

答案 1 :(得分:1)

@Wen已经展示了一个很好的答案,但是,您可以像在POST中最初希望的那样,尝试使用元素明智的运算符。

示例数据框:

import fix_yahoo_finance as fyf
from pandas_datareader import data as web

fyf.pdr_override()

stock_list = sorted(['MOQ.AX', 'ONT.AX', '14D.AX', '1ST.AX', 'T3D.AX', 'TGP.AX'])
goog = web.get_data_yahoo(stock_list, start = '2018-01-01', end = '2019-12-31')['Adj Close']


          14D.AX 1ST.AX MOQ.AX  ONT.AX    T3D.AX    TGP.AX
Date                        
2018-01-01  NaN 0.049   0.23    6.594936    0.005   0.980018
2018-01-02  NaN 0.049   0.23    6.604564    0.005   0.970595
2018-01-03  NaN 0.053   0.23    6.546799    0.005   0.970595
2018-01-04  NaN 0.059   0.23    6.489032    0.005   0.998865
2018-01-07  NaN 0.060   0.23    6.450522    0.005   0.980018

使用逐元素逻辑>>> df NUM INCOME CAP 0 1 20k 5 1 2 30k 9 2 8 50k 2 3 3 40k 7 4 6 50k 7 5 4 80k 3 6 8 20k 8 7 9 90k 10 8 6 60k 4 9 10 10k 7

OR(|)

OR:

>>> df.loc[ (df['INCOME'] <='10k') | (df['INCOME'] >='50k') ]
       NUM INCOME  CAP
    2    8    50k    2
    4    6    50k    7
    5    4    80k    3
    7    9    90k   10
    8    6    60k    4
    9   10    10k    7