4

次のように、データフレームがあり、「日付」列 (テキスト) に値を入力しようとしています。

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')

目的は、「日付」が空白のときに、「日付」の値を前のセルの値で埋めることです。

これどうやってするの?

4

2 に答える 2