我有以下数据框:
MATERIAL KW_WERT NETTO_EURO TA
0 B60ETS 0.15 18.9 SDH
1 B60ETS 0.145 18.27 SDH
2 B60ETS 0.145 18.27 SDH
3 B60ETS 0.15 18.9 SDH
4 B60ETS 0.15 18.9 SDH
5 B60ETS 0.145 18.27 SDH
6 B60ETS 0.15 18.9 SDH
7 B60ETS 3.011 252.92 DSLAM/MSAN
8 B60ETS 3.412 429.91 DSLAM/MSAN
9 B60ETS 0.9 113.4 DSLAM/MSAN
10 B60ETS 0.281 23.6 DSLAM/MSAN
11 B60ETS 0.078 9.83 DSLAM/MSAN
12 B60ETS 0.107 13.48 DSLAM/MSAN
13 B60ETS 0.192 KW DSLAM/MSAN
14 B60ETS 0.007 KW PSTN
15 G230ETS 0.3 46.05 SONSTIGES
如何在列NETTO_EURO
中过滤数据类型(字符串)并删除它?
关键是我获得的基本数据包含一些错误,我不能用它中的字符串数据来总结列。现在是第一个删除行的解决方案。之后我会尝试修复它。
感谢您的帮助。
达米安
答案 0 :(得分:1)
您可以将to_numeric
和notnull
与boolean indexing
一起使用掩码:
print (pd.to_numeric(df.NETTO_EURO, errors='coerce').notnull())
0 True
1 True
2 True
3 True
4 True
5 True
6 True
7 True
8 True
9 True
10 True
11 True
12 True
13 False
14 False
15 True
Name: NETTO_EURO, dtype: bool
print (df[pd.to_numeric(df.NETTO_EURO, errors='coerce').notnull()])
MATERIAL KW_WERT NETTO_EURO TA
0 B60ETS 0.150 18.9 SDH
1 B60ETS 0.145 18.27 SDH
2 B60ETS 0.145 18.27 SDH
3 B60ETS 0.150 18.9 SDH
4 B60ETS 0.150 18.9 SDH
5 B60ETS 0.145 18.27 SDH
6 B60ETS 0.150 18.9 SDH
7 B60ETS 3.011 252.92 DSLAM/MSAN
8 B60ETS 3.412 429.91 DSLAM/MSAN
9 B60ETS 0.900 113.4 DSLAM/MSAN
10 B60ETS 0.281 23.6 DSLAM/MSAN
11 B60ETS 0.078 9.83 DSLAM/MSAN
12 B60ETS 0.107 13.48 DSLAM/MSAN
15 G230ETS 0.300 46.05 SONSTIGES
如果旧版本的pandas使用convert_objects
:
print (df[df["NETTO_EURO"].convert_objects(convert_numeric=True).notnull()])
MATERIAL KW_WERT NETTO_EURO TA
0 B60ETS 0.150 18.9 SDH
1 B60ETS 0.145 18.27 SDH
2 B60ETS 0.145 18.27 SDH
3 B60ETS 0.150 18.9 SDH
4 B60ETS 0.150 18.9 SDH
5 B60ETS 0.145 18.27 SDH
6 B60ETS 0.150 18.9 SDH
7 B60ETS 3.011 252.92 DSLAM/MSAN
8 B60ETS 3.412 429.91 DSLAM/MSAN
9 B60ETS 0.900 113.4 DSLAM/MSAN
10 B60ETS 0.281 23.6 DSLAM/MSAN
11 B60ETS 0.078 9.83 DSLAM/MSAN
12 B60ETS 0.107 13.48 DSLAM/MSAN
15 G230ETS 0.300 46.05 SONSTIGES