我有以下数据框:
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
列中的数据类型(字符串)并将其删除?关键是我得到的基本数据包含一些错误,并且我不能总结其中包含字符串数据的列。现在是删除行的第一个解决方案。稍后,我将尝试以其他方式修复它。
谢谢您的帮助。
达米安
最佳答案
您可以将mask与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
如果有旧版本的熊猫,请使用
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
关于python - 当列中的值是字符串时,删除列中的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38741814/