2
私はpythonとpandasの初心者です。私は、複数の機能を含む新しいデータフレームを得るために、パンダのデータフレームを簡単に解析する必要があります。これは私がしようとしたものです複数のカスタム機能を適用するパンダ
df = pd.DataFrame({'A' : pd.Series(["T100", "T100", "M100", "M100"]), 'B' : pd.Series(["520", "620", "720", "820"]), 'C' : pd.Series(["10/50", "20/50", "30/50", "50/50"])})
>>> df
A B C
0 T100 520 10/50
1 T100 620 20/50
2 M100 720 30/50
3 M100 820 50/50
(そして当然それはうまくいきませんでした - それは誤りAttributeError: 'DataFrame' object has no attribute 'agg'
が、私は何をしたいのアイデアを返されますが):ここでおもちゃの例です
def get_pat_ID(row):
sample = row['A']
patID = re.match("[TM](\d+)", sample).group(1)
return(patID)
def get_funcB(row):
sample, b, c = row['A'], row['B'], row['C']
if sample == "T100":
output = b + "_" + c
else:
output = "NA"
return(output)
def cust(dataset, funcname):
f = dataset.apply(funcname, axis=1) # I want the function to be performed on each row of my dataframe
return(f)
funcdict = {"pat_ID": get_pat_ID, "funcB": get_funcB} # contains all the functions that I want to pass to my dataframe
funcs = {'PatID': cust(df, funcdict["pat_ID"]), 'AnotherFunc': cust(df, funcdict["funcB"])} # creates one column for output of each function
newdf = pd.DataFrame()
newdf = df.agg(funcs)
apply
関数が関数を計算するたびに同じ行を繰り返しているため、私の方法が最も効率的ではないことがわかります。誰も私を助けることができるpls?でも、単純なループと
申し訳ありません!ご回答有難うございます! – phusion