0

以下のコードの結果として、展開されたコードが同じ列 (nutrition以下) に整数とブール値を生成したため、エラーがどこに忍び寄るのか混乱しています。テストでは小さなデータでは発生しません。ここで何が起こる可能性がありますか?

LopNr合計が 1 を超えていない月に、パンダはTrueを 1 に変換しませんでしたか? なぜだめですか?いずれにせよ、この方法で最終結果を手動でオーバーライドしても安全ですか?

データには、関連する列が次のような行があります。

LopNr      DIAGNOS     INDATUMA
    1      E12 E14     20050705

コードは次のとおりです。

# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd

all_treatments = list()
filelist = ['file1']

nutrition_codes = '|'.join(["D{}".format(i) for i in range(50, 54)] +  ["E{}".format(i) for i in range(10, 15)] + ["E{}".format(i) for i in range(40, 47)] +  ["E{}".format(i) for i in range(50, 69)])

for file in filelist:
    filename = 'PATH/' + file +'.txt'
    if file[0]=='o':
        treatments = pd.read_table(filename,usecols=[0,8,10])
    elif file[0]=='s':
        treatments = pd.read_table(filename,usecols=[0,8,11])
    else:
        print "file should start with s or o, no?"
    all_treatments.append(treatments)

all_treatments = pd.concat(all_treatments, ignore_index=True)
all_treatments['date'] = pd.to_datetime(all_treatments['INDATUMA'].astype(str), coerce=True)
all_treatments['year'] = all_treatments['date'].dt.year
all_treatments['month'] = all_treatments['date'].dt.month
all_treatments['nutrition'] = all_treatments.DIAGNOS.str.contains(nutrition_codes)
all_treatments = all_treatments.drop(['DIAGNOS','INDATUMA','date'], axis=1)
all_treatments = all_treatments.groupby(['LopNr','year','month']).sum().astype(int,copy=False,raise_on_error=False)
all_treatments.to_csv('PATH/treatments_monthly.csv')
4

0 に答える 0