Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:dataframe消除列中的一些数据_Python_Pandas_Dataframe - Fatal编程技术网

Python:dataframe消除列中的一些数据

Python:dataframe消除列中的一些数据,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个如下所示的数据帧,并希望消除列'Stockocde',字符串len为4,列'type'为NaN df Stockcode Stockname type 0 ZFSW 2ndChance W230307 NaN 1 502 3Cnergy L 2 1E0W 3Cnergy W200528 NaN 3 AZG

我有一个如下所示的数据帧,并希望消除列'Stockocde',字符串len为4,列'type'为NaN

df

    Stockcode             Stockname type
0         ZFSW     2ndChance W230307  NaN
1          502               3Cnergy    L
2         1E0W       3Cnergy W200528  NaN
3          AZG             8Telecom^    J
4          BQC               A-Smart    C
5          BTJ         A-Sonic Aero^    G
6          5GZ                    AA    C
7          A35       ABF SG BOND ETF  NaN
8          533                   ABR    G
9          L5I              Abterra^    K
10         541        Abundance Intl    G
11        1C4W  AbundanceIn eW210130  NaN
12        ADQU      Accordia Golf Tr    R
13         QZG         Accrelist Ltd    G
14         A75     Ace Achieve Info^    J
15         5FW      Acesian Partners    F
16        K3HD           ACH ADR US$    C
17         AYV                 Acma^    C
18         43F               Acromec    Q
期望输出为

    Stockcode             Stockname type
1          502               3Cnergy    L
3          AZG             8Telecom^    J
4          BQC               A-Smart    C
5          BTJ         A-Sonic Aero^    G
6          5GZ                    AA    C
7          A35       ABF SG BOND ETF  NaN
8          533                   ABR    G
9          L5I              Abterra^    K
10         541        Abundance Intl    G
12        ADQU      Accordia Golf Tr    R
13         QZG         Accrelist Ltd    G
14         A75     Ace Achieve Info^    J
15         5FW      Acesian Partners    F
16        K3HD           ACH ADR US$    C
17         AYV                 Acma^    C
18         43F               Acromec    Q
删除第0、2和11行

我的代码如下

df[~(df['type'].isnull() & df['Stockcode'].str.len()==4)]

df['type'].isnull()
df['Stockcode'].str.len()==4)
如果单独测试,但不能一起工作以获得期望的结果,则结果为真。请建议

在您的解决方案中,第二个条件缺少括号,原因是:

另一种解决方案是“反转”条件,并将
&
更改为
|
,如:

df1 = df[df['type'].notnull() | (df['Stockcode'].str.len()!=4)]
print (df1)
   Stockcode          Stockname type
1        502            3Cnergy    L
3        AZG          8Telecom^    J
4        BQC            A-Smart    C
5        BTJ      A-Sonic Aero^    G
6        5GZ                 AA    C
7        A35    ABF SG BOND ETF  NaN
8        533                ABR    G
9        L5I           Abterra^    K
10       541     Abundance Intl    G
12      ADQU   Accordia Golf Tr    R
13       QZG      Accrelist Ltd    G
14       A75  Ace Achieve Info^    J
15       5FW   Acesian Partners    F
16      K3HD        ACH ADR US$    C
17       AYV              Acma^    C
18       43F            Acromec    Q
df1 = df[df['type'].notnull() | (df['Stockcode'].str.len()!=4)]
print (df1)
   Stockcode          Stockname type
1        502            3Cnergy    L
3        AZG          8Telecom^    J
4        BQC            A-Smart    C
5        BTJ      A-Sonic Aero^    G
6        5GZ                 AA    C
7        A35    ABF SG BOND ETF  NaN
8        533                ABR    G
9        L5I           Abterra^    K
10       541     Abundance Intl    G
12      ADQU   Accordia Golf Tr    R
13       QZG      Accrelist Ltd    G
14       A75  Ace Achieve Info^    J
15       5FW   Acesian Partners    F
16      K3HD        ACH ADR US$    C
17       AYV              Acma^    C
18       43F            Acromec    Q