Python pandasで複数データフレームを使うために、クラスを使いたいです。
従来、データフレームの行方向の計算をする関数をapplyで使っていました。
これをクラス内に作りたいのですが、クラスを使った場合の行方向の指示の仕方がわかりません。
基本的な質問で申し訳ないのですが、教示いただけるを幸いです。
実現したいこと
クラスを使ってデータフレームの行方向の計算をして列を追加したい。
(以下のコードでcol2列の値を1行ずらして新しい列に入れたい)
発生している問題・エラーメッセージ
クラスで行方向の計算の記載方法がわからない。
エラーメッセージ NameError: name 'x' is not defined
該当のソースコード
python
1import pandas as pd 2data={'col1' : [4,12,2,14,15,16], 3 'col2' : [4,12,2,14,15,16]} 4df =pd.DataFrame(data) 5 6# col2を1行ずらす(従来のclassを使わない方法) 7def test(x): 8 if x.name == 0: 9 df['test'] = np.nan 10 elif x.name >= 1: 11 df.loc[x.name, 'test'] = df.loc[x.name-1,'col2'] 12 13df.apply(test, axis=1) 14 15### 試したこと 16# 上記の関数をclassに入れたいが、xの指示方法がわからない 17class TestCol: 18 def __init__(self, x): 19 self.x = x 20 def rowmove(self,x): 21 if self.x.name == 0: 22 df['test'] = np.nan 23 elif self.x.name >= 1: 24 df.loc[self.x.name, 'test'] = df.loc[self.x.name-1,'col2'] 25 26testclass = TestCol(x) 27testclass.rowmove() 28
回答2件
あなたの回答
tips
プレビュー