python - 无法删除 [Unnamed:0] 和 NaN 字段数据
问题描述
无法删除 pd.DataFrame 的 [Unnamed:0] 和 NaN 字段数据,也不知道为什么后面的编码会产生太多不需要的数据,谢谢!
# -*- coding:UTF-8 -*-
from pyvirtualdisplay import Display
from bs4 import BeautifulSoup
from selenium import webdriver
import pandas as pd
display = Display(visible=0, size=(1024, 768))
display.start()
driver = webdriver.Firefox()
driver.get("http://www.fdmbenzinpriser.dk/searchprices/5/")
lines = [event.get_attribute('outerHTML') for event in driver.find_elements_by_xpath('//table[@id="sortabletable"]')]
df = pd.concat([pd.read_html(line)[0] for line in lines], ignore_index=True)
print df
print df.shape
driver.close()
display.stop()
现有编码输出:
[ Unnamed: 0 Pris Adresse Tidspunkt
0 NaN 8.99 Odinsvej 2 4100 Ringsted 11 timer 55 m
1 NaN 9.09 Sdr.Havnegade 3 6000 Kolding 14 timer 48 m
2 NaN 9.09 Vestermarksvej 2 6600 Vejen 16 timer 35 m
3 NaN 10.99 Bøsbrovej 92B 8940 Randers SV 21 timer 1 m
* Denne pris er indberettet af selskabet Indbe... NaN
预期输出:
Pris Adresse Tidspunkt
8.99 Odinsvej 2 4100 Ringsted 8 timer 47 m
9.09 Sdr.Havnegade 3 6000 Kolding 11 timer 39 m
9.09 Vestermarksvej 2 6600 Vejen 13 timer 27 m
10.99 Kastanievej 2 5800 Nyborg 17 timer 52 m
10.99 Vestvejen 95 6200 Aabenraa 17 timer 52 m
10.99 Gammel Århusvej 3 8940 Randers SV 17 timer 52 m
10.99 Frederiksværksgade 87 3400 Hillerød 17 timer 52 m
10.99 Egelundsvej 5 2620 Albertslund 17 timer 52 m
10.99 Bøsbrovej 92B 8940 Randers SV 17 timer 52 m
10.99 Milnersvej 47 3400 Hillerød 17 timer 52 m
解决方案
您可以使用以下方法删除布尔掩码的Unnamed
列:startswith
loc
df = df.loc[:, ~df.columns.str.startswith('Unnamed')]
如果需要删除NaN
所有列数据中的 s,请使用dropna
:
df.dropna(axis=0, how='all', inplace=True)
推荐阅读
- python - python从txt文件中删除某些动态行
- blender - 如何将资产导入搅拌机?
- javascript - 根据您选择的单选按钮显示和隐藏输入字段
- batch-file - Anylogic:运行模型 .bat 文件和从 C# 调用 .bat 文件时的不同结果
- typescript - 使用打字稿将对象键限制为仅字符串类型
- xamarin - 如何解决 Xamarin Forms SQLite Android 11 错误?
- qt-installer - Qt 安装程序框架环境变量
- tcp - Dfinity 互联网计算机 - 与副本通信时出错
- android - Android 如何获取仪器测试的 XML 输出
- java - 一段关于Java关键字volatile的代码