我有一个数据框,我正在尝试填写“日期”列(即文本)中的值,如下所示:
使用dfs=pd.read_html(pageUrl,infer_types=False)
then生成数据帧df=dfs[0]
Date Time datetime Year
0 None None 2007
1 May 1 0:58 None 2007
2 1:00 None 2007
3 1:30 None 2007
4 1:45 None 2007
5 3:45 None 2007
6 4:45 None 2007
7 6:30 None 2007
8 7:15 None 2007
9 7:45 None 2007
df.dtypes
显示;
Date object
Time object
datetime object
Year int64
dtype: object
首先,我尝试按行填充。如果当前“日期”为空,则尝试向后移动一行以获取上一个值:
def fillDate(r):
if r['Date']=="":
p=r.shift(-1)
r['Date']=p['Date']
return r
然后
df.apply(fillDate,axis=1)
这将使用“时间”填充“日期”列。
所以然后我尝试使用axis = 0(基于每列)应用并修改函数,使其仅将其应用于“日期”列(我看不到如何将其应用于一列)
def fillDate(r):
if r.name=='Date':
if r['Date']=="":
p=r.shift(-1)
r['Date']=p['Date']
return r
然后
df.apply(fillDate,axis=0)
给出错误
KeyError: ('Date', u'occurred at index Date')
目的是当“日期”为空时,用前一个单元格中的值填写“日期”中的值。
我怎样才能做到这一点?