異なる長さのパンダデータフレームから複数の行をシフトする方法はありますか?

エドゥアルド

添付された画像のようなパンダのデータフレームがあります。Wells1,2 使用しているデータフレーム、..、nという名前の各列には、異なる生産開始があります。それらのいくつかは5ヶ月目または9ヶ月目で、いくつかは24ヶ月後です。それらすべての開始日を正規化したい。つまり、ゼロ以外のすべての値を上にシフトします。このサンプルコードはWell7でのみうまく機能することは知っていますが、最適化してすべてを一度に実行したいと思います。

df['Well 7'] = df['Well 7'].shift(-1)

私はパンダに不慣れです。ループで試しましたが、データフレーム名がループで機能しません。

  df['Well {0}'].format(well)

どんな助けでも大歓迎です!

ansev

Series.str.startswithではcols_WellのWell列を検出するために使用します(この手順は省略して、自分で列を選択できます)。

次に、例ではSeries.cumsumshift_cols_Wellを使用して0のイニシャルの数を計算できますしたがって、このシリーズは、渡すパラメータを示していますSeries.shift

cols_Well = df.columns[df.columns.str.startswith('Well')]
shift_cols_Well = df[cols_Well].ne(0).cumsum().eq(0).sum()
#shift_cols_Well = df[cols_Well].eq(0).cumprod().sum()
for col in cols_Well:
    df[col] = df[col].shift(-shift_cols_Well.loc[col])

df = pd.DataFrame({'Time':range(1,10),
                   'Well 1':[0,2,3,4,5,6,7,8,9],'Well 2':[0,0,3,4,5,6,7,8,9]})

   Time  Well 1  Well 2
0     1       0       0
1     2       2       0
2     3       3       3
3     4       4       4
4     5       5       5
5     6       6       6
6     7       7       7
7     8       8       8
8     9       9       9

ソリューションの例

cols_Well = df.columns[df.columns.str.startswith('Well')]
shift_cols_Well = df[cols_Well].ne(0).cumsum().eq(0).sum()
#shift_cols_Well = df[cols_Well].eq(0).cumprod().sum()
for col in cols_Well:
    df[col] = df[col].shift(-shift_cols_Well.loc[col])
print(df)

   Time  Well 1  Well 2
0     1     2.0     3.0
1     2     3.0     4.0
2     3     4.0     5.0
3     4     5.0     6.0
4     5     6.0     7.0
5     6     7.0     8.0
6     7     8.0     9.0
7     8     9.0     NaN
8     9     NaN     NaN

詳細

print(shift_cols_Well)
Well 1    1
Well 2    2
dtype: int64

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

異なる長さのパンダデータフレームから複数の行をシフトする方法はありますか?

分類Dev

大きなパンダデータフレームで複数の行を選択する効率的な方法はありますか?

分類Dev

パンダは、異なる長さの異なるフレームからの複数の列の値を比較します

分類Dev

行の長さが不定の別のデータフレームからデータフレームを動的に生成する方法はありますか?

分類Dev

パンダのデータフレームの最初の行を1セルだけ右にシフトする方法はありますか?

分類Dev

Pandasで、あるデータフレームで(ExcelのCountifs)をカウントし、異なる長さの別のデータフレームで新しい列としてカウントを追加する方法はありますか?

分類Dev

パンダデータフレームの複数の列の空白をトリミング/削除する方法はありますか?

分類Dev

2つの異なるデータフレームからの2つの行を比較する方法パンダ

分類Dev

R:行が別のデータフレームに持つ値の数をカウントする方法(長さは異なります)

分類Dev

単一のxlsxから複数のデータフレームに複数のExcelタブ/シートを読み取る方法はありますか?各データフレームにはシート名が付けられていますか?

分類Dev

複数の列の2つの異なるデータフレームを一致させる方法はありますか

分類Dev

複数の列からパンダのデータフレーム行の値のリストを作成する

分類Dev

パンダデータフレームからのmsアクセスで複数の行を更新する方法

分類Dev

パンダにデータフレームを日からデフォルトのd / m / y形式に変換する方法はありますか?

分類Dev

パンダデータフレームからタプルの複数のリストを作成する方法

分類Dev

パンダは、長さが異なる2つのデータフレームをマージします

分類Dev

異なる次元のパンダでデータフレームを乗算する:列の数は同じですが、行の数は異なります

分類Dev

パンダデータフレームの3列から等高線または表面マップを描画する簡単な方法はありますか?

分類Dev

リレーショナルパンダデータフレームの作成を実行する方法はありますか?

分類Dev

2つのデータフレームのシリアル番号を照合し、df2のシリーズ(行から)のリストをdf1の新しい列に追加する方法はありますか(Python、パンダ)

分類Dev

パンダのシリーズから1行n列のデータフレームを作成する方法は?

分類Dev

Python Pandas:パンダデータフレームに行として異なる長さのリストを割り当てます

分類Dev

パンダのデータフレームから別の複数の行に1行をコピーする

分類Dev

このパンダデータフレームを生成するより速い方法はありますか?

分類Dev

パンダを使用してデータフレームから複数の列を削除する方法は?

分類Dev

形状の異なる2つのパンダデータフレームをマージする際の問題はありますか?

分類Dev

値がさまざまな数の辞書のリストである辞書からパンダデータフレームを生成します

分類Dev

データフレーム内のさまざまな数の行をバインドする方法はありますか?

分類Dev

複数の列に同じ値があり、別の値が異なるデータフレームから行を選択します

Related 関連記事

  1. 1

    異なる長さのパンダデータフレームから複数の行をシフトする方法はありますか?

  2. 2

    大きなパンダデータフレームで複数の行を選択する効率的な方法はありますか?

  3. 3

    パンダは、異なる長さの異なるフレームからの複数の列の値を比較します

  4. 4

    行の長さが不定の別のデータフレームからデータフレームを動的に生成する方法はありますか?

  5. 5

    パンダのデータフレームの最初の行を1セルだけ右にシフトする方法はありますか?

  6. 6

    Pandasで、あるデータフレームで(ExcelのCountifs)をカウントし、異なる長さの別のデータフレームで新しい列としてカウントを追加する方法はありますか?

  7. 7

    パンダデータフレームの複数の列の空白をトリミング/削除する方法はありますか?

  8. 8

    2つの異なるデータフレームからの2つの行を比較する方法パンダ

  9. 9

    R:行が別のデータフレームに持つ値の数をカウントする方法(長さは異なります)

  10. 10

    単一のxlsxから複数のデータフレームに複数のExcelタブ/シートを読み取る方法はありますか?各データフレームにはシート名が付けられていますか?

  11. 11

    複数の列の2つの異なるデータフレームを一致させる方法はありますか

  12. 12

    複数の列からパンダのデータフレーム行の値のリストを作成する

  13. 13

    パンダデータフレームからのmsアクセスで複数の行を更新する方法

  14. 14

    パンダにデータフレームを日からデフォルトのd / m / y形式に変換する方法はありますか?

  15. 15

    パンダデータフレームからタプルの複数のリストを作成する方法

  16. 16

    パンダは、長さが異なる2つのデータフレームをマージします

  17. 17

    異なる次元のパンダでデータフレームを乗算する:列の数は同じですが、行の数は異なります

  18. 18

    パンダデータフレームの3列から等高線または表面マップを描画する簡単な方法はありますか?

  19. 19

    リレーショナルパンダデータフレームの作成を実行する方法はありますか?

  20. 20

    2つのデータフレームのシリアル番号を照合し、df2のシリーズ(行から)のリストをdf1の新しい列に追加する方法はありますか(Python、パンダ)

  21. 21

    パンダのシリーズから1行n列のデータフレームを作成する方法は?

  22. 22

    Python Pandas:パンダデータフレームに行として異なる長さのリストを割り当てます

  23. 23

    パンダのデータフレームから別の複数の行に1行をコピーする

  24. 24

    このパンダデータフレームを生成するより速い方法はありますか?

  25. 25

    パンダを使用してデータフレームから複数の列を削除する方法は?

  26. 26

    形状の異なる2つのパンダデータフレームをマージする際の問題はありますか?

  27. 27

    値がさまざまな数の辞書のリストである辞書からパンダデータフレームを生成します

  28. 28

    データフレーム内のさまざまな数の行をバインドする方法はありますか?

  29. 29

    複数の列に同じ値があり、別の値が異なるデータフレームから行を選択します

ホットタグ

アーカイブ