Python:dataframe消除列中的一些数据
我有一个如下所示的数据帧,并希望消除列'Stockocde',字符串len为4,列'type'为NaNPython: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
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