条件に基づいて行IDを取得

Pandas get the row ID based on condition – StackOverflow

indexとして処理するのがリーズナブル.

import io
import pandas as pd


def get_idx(df, s='1992-01-03'):
    try:
        return df.index.get_loc(s).start
    except AttributeError:
        return df.index.get_loc(s)


strings = """Date          best    a    b    c    d
1990-01-01    a       5    4    7    2
1991-01-02    c       10   1    2    0
1992-01-03    d       2    1    4    12
1993-01-04    a       5    8    11   6"""

df = pd.read_csv(io.StringIO(strings), sep='\s+', parse_dates=['Date'])
print(df)
print(df['Date'].eq('1992-01-03').idxmax())

df = pd.read_csv(io.StringIO(strings), sep='\s+', index_col=0, parse_dates=['Date'])
print(df)
print(df.pipe(get_idx))


strings = """Date          best    a    b    c    d
1990-01-01    a       5    4    7    2
1991-01-02    c       10   1    2    0
1992-01-03    d       2    1    4    12
1992-01-03    d       2    1    4    12
1993-01-04    a       5    8    11   6"""

df = pd.read_csv(io.StringIO(strings), sep='\s+', parse_dates=['Date'])
print(df)
print(df['Date'].eq('1992-01-03').idxmax())

df = pd.read_csv(io.StringIO(strings), sep='\s+', index_col=0, parse_dates=['Date'])
print(df)
print(df.pipe(get_idx))
        Date best   a  b   c   d
0 1990-01-01    a   5  4   7   2
1 1991-01-02    c  10  1   2   0
2 1992-01-03    d   2  1   4  12
3 1993-01-04    a   5  8  11   6
2
           best   a  b   c   d
Date                          
1990-01-01    a   5  4   7   2
1991-01-02    c  10  1   2   0
1992-01-03    d   2  1   4  12
1993-01-04    a   5  8  11   6
2
        Date best   a  b   c   d
0 1990-01-01    a   5  4   7   2
1 1991-01-02    c  10  1   2   0
2 1992-01-03    d   2  1   4  12
3 1992-01-03    d   2  1   4  12
4 1993-01-04    a   5  8  11   6
2
           best   a  b   c   d
Date                          
1990-01-01    a   5  4   7   2
1991-01-02    c  10  1   2   0
1992-01-03    d   2  1   4  12
1992-01-03    d   2  1   4  12
1993-01-04    a   5  8  11   6
2
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください