Pandas - Напомним самое раннее значение для определенной группы - PullRequest
0 голосов
/ 27 января 2020

У меня есть набор данных, который выглядит так «Старый», то самые ранние «ScoreA» и «ScoreB» для этого конкретного «ID» вызываются и помещаются в «FirstScoreA» и «FirstScoreB» соответственно.

Я смог придумать код, который дает мне максимальное значение, но не самое раннее. Но даже с этим, я не мог ограничить это только определенным удостоверением личности, поэтому я застрял вдвойне.

Может ли кто-нибудь помочь мне разобраться с этим?

1 Ответ

0 голосов
/ 27 января 2020
df['FirstScore1'] = np.where(df.Type=='New', df.ScoreA, np.nan)
df['FirstScore1'] = df.groupby('ID').FirstScore1.transform(lambda x: x.ffill())
df['FirstScore1'] = np.where(df.Type=='New', np.nan, df['FirstScore1'])
df['FirstScore2'] = np.where(df.Type=='New', df.ScoreB, np.nan)
df['FirstScore2'] = df.groupby('ID').FirstScore2.transform(lambda x: x.ffill())
df['FirstScore2'] = np.where(df.Type=='New', np.nan, df['FirstScore2'])


    ID  TimeStamp       ScoreA  ScoreB  Type    FirstScore1 FirstScore2
0   A   20150908143000  345.0   316.0   New     NaN         NaN
1   B   20150908140300  400.0   480.0   New     NaN         NaN
2   B   20150908140600  NaN 1   20.0    Old     400.0       480.0
3   B   20150908143000  10743.0 8803.0  Old     400.0       480.0
4   C   20150908140100  600.0   1715.0  New     NaN         NaN
5   C   20150908140200  200.0   1062.0  Old     600.0       1715.0
6   C   20150908141000  NaN     145.0   Old     600.0       1715.0
7   C   20150908141500  418.0   NaN     Old     600.0       1715.0
8   D   20150908143000  433.0   65.0    New     NaN         NaN
...