更新:
私のデータセットには、3つの列(x、y)とVALUEがあります。 (すでにソート)このように見ています:列内に与える値を持つ行を残す
df1:
x , y ,value
1 , 1 , 12
2 , 2 , 12
4 , 3 , 12
1 , 1 , 11
2 , 2 , 11
4 , 3 , 11
1 , 1 , 33
2 , 2 , 33
4 , 3 , 33
私は、(XとYの列で)それらbewteen距離は= 1 <あり、その私の半径を言うことができますそれらの行を取得する必要があります。しかし、同時に私は値が等しいものだけをグループ化してフィルタリングする必要があります。 1つのヘッダがあったので 私は1つのデータセットのそれを比較するために問題を抱えていたので、私はPythonコマンドを有する第2のデータセットを作成しました:
def dist_value_comp(row):
x_dist = abs(df['y'] - row['y']) <= 1
y_dist = abs(df['x'] - row['x']) <= 1
xy_dist = x_dist & y_dist
max_value = df.loc[xy_dist, 'value'].max()
return row['value'] == max_value
df['keep_row'] = df.apply(dist_value_comp, axis=1)
df.loc[df['keep_row'], ['x', 'y', 'value']]
と
:df:
x , y ,value
1 , 1 , 12
2 , 2 , 12
4 , 3 , 12
x , y ,value
1 , 1 , 11
2 , 2 , 11
4 , 3 , 11
x , y ,value
1 , 1 , 33
2 , 2 , 33
4 , 3 , 33
私はこのコードを使用しようとしました
filtered_df = df[df.apply(lambda line: abs(line['x']- line['y']) <= 1, 1)]
for i in filtered_df.groupby('value'):
print(i)
不良データフレームに接続されたエラーを受け取る前に、修復しましたが、まだ出力結果がありません。 これはdf1から新しいデータフレームdfを作成する方法です。ここに入れておくとよいでしょう。常にテーブルを印刷するので、大きなマイナスがあります。そして、私はそれをもう一度テストし、このdefは私に空のDataFrameを与えます。
VALUE1= df1.VALUE.unique()
def separator():
lst=[]
for VALUE in VALUE1:
abc= df1[df1.VALUE==VALUE]
print abc
return lst
ab=separator()
df=pd.DataFrame(ab)
私は、通常のデータセットDF1をしようとしていたとき、私は= 1
アカウントの半径を考慮することなく、出力上のすべてのデータを持っている私はこの1つのように私の出力テーブルの上に取得する必要があります:
x , y ,value
1 , 1 , 12
2 , 2 , 12
x , y ,value
1 , 1 , 11
2 , 2 , 11
x , y ,value
1 , 1 , 33
2 , 2 , 33
UPDATE 2:
私はこのコードで今働いています:
filtered_df = df[df.apply(lambda line: abs(line['x']- line['y']) <= 1, 1)]
for i in filtered_df.groupby('value'):
print(i)
私は出力として見ていますが、私が出力を見ているときは、何の価値があるか分からないので、 は何もしていません。なぜなら、半径+/- 1を使用する必要があります。おもう。 私のデータセットにはもっと多くの列がありますので、私の4番目と5番目の列 'D' & 'E'を考慮に入れることができるので、列Dの最小値であるこの行から半径が取られます。& E
出力結果は、私が望むのと同じでなければなりませんが、今私はこの場合、半径+/- 1のどの値から開始するのかを知っています。 誰でも今私を助けることができますか? ご迷惑をおかけして申し訳ありません!
こんにちは、前と同じエラーがあります。 'filtered_df = df [df。AttributeError: 'NoneType'オブジェクトには属性 'apply'がありません – Pawe
正しくロードしてもよろしいですか?(lambda line:abs(line ['A'] - line ['B'])あなたが私たちに示したデータフレーム? 'df'オブジェクトがデータフレームではなく' None'にマップされているようです – LoicM
私の質問が更新されました。 – Pawe