閉まっている。この質問はさらに焦点を絞る必要があります。現在回答を受け付けておりません。
この質問を改善したいですか?この投稿を編集して、1 つの問題のみに焦点を当てた質問を更新してください。
3 年前
に閉鎖されました。この質問を改善してください
以下に示すようなサンプル データフレームがあります。
x y dx
0 1 6.0 1.1
1 2 6.0 1.5
2 2 6.5 1.2
3 3 7.2 4.3
4 4 7.5 4.5
5 4 8.0 4.7
6 5 1.1 7.0
列 dx の値が互いに 1 の範囲内にある場合、行を結合したいと考えています。重複する範囲はありません。これらの行の 1 つを保持して残りを削除するか、すべての行の平均を取ることができます。したがって、期待される出力は次のようになります。
x y dx
1 1 6.0 1.1
2 3 7.2 4.3
3 5 1.1 7.0
または
x y dx
0 1.67 6.17 1.26
1 3.67 7.57 4.5
2 5 1.1 7.0
これら 2 つのオプションのいずれか、または両方が必要ですか?
– イオアジマス
2020 年 9 月 4 日 22:37
これであなたの質問は解決しましたか?パンダのマージ 101
– トレントン・マッキニー
2020 年 9 月 4 日 22:37
@archer 2 つのいずれでも機能します。ありがとう。
– ビープログラマー
2020 年 9 月 4 日 22:39
------------------------
最初のオプションは次のように指定できます。
import pandas as pd
new_df=df[0:1]
for i in range(1,len(df)):
if df.dx.iloc[i]-new_df.dx.iloc[-1]>1:
new_df=pd.concat([new_df, df.iloc[i:i+1,:]], ignore_index=True)
5
問題を正しく反映するためにサンプル データ フレームを変更しました。 1 つの行にすべての整数が含まれる必要はありません。
– ビープログラマー
2020 年 9 月 4 日 22:47
それでは、fi から始めます最初の行、最初の行を保持して dx+1 の範囲内のすべての行を削除し、次に次の行 (dx の値に関係なく) を保持し、その行から dx+1 を持つ次の行を削除したいなどですか?
– イオアジマス
2020 年 9 月 4 日 22:50
はい、その通りです
– ビープログラマー
2020 年 9 月 4 日 22:50
いくつか変更を加えました。答えを確認してください。
– イオアジマス
2020 年 9 月 4 日 23:07
ご承諾いただきありがとうございます。おそらく賛成票も?よろしく
– イオアジマス
2020 年 9 月 4 日 23:09
------------------------
これを試してください
df_final = df.groupby((df.dx.diff().abs() > 1).cumsum(), as_index=False).first()
Out[288]:
x y dx
0 1 6.0 1.1
1 3 7.2 4.3
2 5 1.1 7.0