this questionを投稿していて、アプリケーションを拡張する必要があります。私は第二の最大の日付を取得するために必要な場合に予想される出力は次のようになりN最大の日付を取得するパンダ
#import pandas as pd
#df = pd.read_clipboard()
#df['Insert_Date'] = pd.to_datetime(df['Insert_Date'])
# used in example below
#df2 = df.sort_values(['Vendor','InsertDate']).drop_duplicates(['Vendor'],keep='last')
Vendor Insert_Date Total
Steph 2017-10-25 2
Matt 2017-10-31 13
Chris 2017-11-03 3
Steve 2017-10-23 11
Chris 2017-10-27 3
Steve 2017-11-01 11
:私は今、各Vendor
についてN
最大の日付を取得する必要があります
Vendor Insert_Date Total
Steph 2017-10-25 2
Steve 2017-10-23 11
Matt 2017-10-31 13
Chris 2017-10-27 3
私は簡単で第二の最大の日付を取得することができます例df.loc[~df.index.isin(df2.index)]
でdf2
を使用しますが、私は50番目の最大値を取得する必要がある場合、それは私CLOSを取得し、私もdf.groupby('Vendor')['Insert_Date'].nlargest(N_HERE)
を試してみましたisin()
を使用するには、データフレームの建物がたくさん...
ですeの場合、ベンダごとにN
の値を取得する必要があります。
私はまた、ベンダーによってDFをフィルタリング試してみました:
df.loc[df['Vendor']=='Chris', 'Insert_Date'].nlargest(2)
を私はdf.loc[df['Vendor']=='Chris', 'Insert_Date'].nlargest(2)[2]
を有する第2のレコードを取得しようとする場合、それを返します:Timestamp('2017-11-03 00:00:00')
を。代わりに私はdf.loc[df['Vendor']=='Chris', 'Insert_Date'].nlargest(2)[1:2]
を使用する必要があります。 [2]
ではなく、ここでリストスライスを使用する必要がありますか?
要約すれば、ベンダーによってN
の最大日付を返すにはどうすればよいですか?
これはこの小さな例で機能します。しかし、ベンダーごとに10日間の日付があり、9日目の日付を取得する必要がある場合はどうなりますか? – MattR
@MattR自分を説明しましょう。あなたが注文を間違えたと思っていただけで、修正しようとしました。とにかく、私はあなたの最初のステートメントを誤解しているかもしれませんが、私は編集でそれを修正しようとしました。 –
私は同様のものを試しました。 'apply()'で 'iloc'を使うことはできませんでした。もう一度私は車輪を再発明しようとしているように感じ、あなたたちはただちにそれをやります。 – MattR