0
我的目標是最終在x軸上創建一個帶日期的散點圖,並贏得y軸上的代表(每個候選人)的代表。在缺少日期時,我不確定如何「填補空白」。我附上了我得到的表格的照片。Python/Pandas Dataframe:自動填寫缺失的行
例如,我試圖把3月1日作爲阿拉斯加州,阿肯色州等的日期,以便繪製數據。
# CREATE DATAFRAME WITH DELEGATE WON/TARGET INFORMATION
import requests
from lxml import html
import pandas
url = "http://projects.fivethirtyeight.com/election-2016/delegate-targets/"
response = requests.get(url)
doc = html.fromstring(response.text)
tables = doc.findall('.//table[@class="delegates desktop"]')
election = tables[0]
election_rows = election.findall('.//tr')
def extractCells(row, isHeader=False):
if isHeader:
cells = row.findall('.//th')
else:
cells = row.findall('.//td')
return [val.text_content() for val in cells]
def parse_options_data(table):
rows = table.findall(".//tr")
header = extractCells(rows[1], isHeader=True)
data = [extractCells(row, isHeader=False) for row in rows[2:]]
trumpdata = "Trump Won Delegates"
cruzdata = "Cruz Won Delegates"
kasichdata = "Kasich Won Delegates"
data = pandas.DataFrame(data, columns=["Date", "State or Territory", "Total Delegates", trumpdata, cruzdata, kasichdata, "Rubio"])
data.insert(4, "Trump Target Delegates", data[trumpdata].str.extract(r'(\d{0,3}$)'))
data.insert(6, "Cruz Target Delegates", data[cruzdata].str.extract(r'(\d{0,3}$)'))
data.insert(8, "Kasich Target Delegates", data[kasichdata].str.extract(r'(\d{0,3}$)'))
data = data.drop('Rubio', 1)
data[trumpdata] = data[trumpdata].str.extract(r'(^\d{0,3})')
data[cruzdata] = data[cruzdata].str.extract(r'(^\d{0,3})')
data[kasichdata] = data[kasichdata].str.extract(r'(^\d{0,3})')
return df
election_data = parse_options_data(election)
df = pandas.DataFrame(election_data)
df
只是爲了澄清,你怎麼知道什麼樣的價值觀填補空白?也就是說,你怎麼知道「3月1日」是放入阿拉斯加州,阿肯色州等地的日期字段的正確值?或者,只要它不是空白的(也許不低於現有值),是否有任何日期呢? – David
嗨!理想情況下,我會在3月1日之後(但在下一個日期之前)使用前向填充(?)填充3月1日之後的所有空白。因此,例如,3月1日的7行,然後是3月12日的5行,每個日期的一行。希望這是有道理的,非常感謝! – Lucy