次のように、データフレームがあり、「日付」列 (テキスト) に値を入力しようとしています。
dfs=pd.read_html(pageUrl,infer_types=False)
データフレームは、次に使用して生成されます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
まず、行ごとに入力してみました。現在の「日付」が空の場合、1行前にシフトして前の値を取得しようとしています:
def fillDate(r):
if r['Date']=="":
p=r.shift(-1)
r['Date']=p['Date']
return r
それから
df.apply(fillDate,axis=1)
これにより、「日付」列に「時刻」が入力されます。
それで、軸= 0(列ごと)で適用して関数を変更して、これを「日付」列にのみ適用しようとしました(これを1列だけに適用する方法がわかりません)
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')
目的は、「日付」が空白のときに、「日付」の値を前のセルの値で埋めることです。
これどうやってするの?