パンダの行の選択について質問があります。次の例を見てみましょう。
df = pd.DataFrame({
'Branch' : 'A A A A A B'.split(),
'Buyer': 'Carl Mark Carl Joe Mark Carl'.split(),
'Quantity': [1,3,5,8,9,3],
'Date' : [
DT.datetime(2013,9,1,13,0),
DT.datetime(2013,9,1,13,5),
DT.datetime(2013,10,1,20,0),
DT.datetime(2013,10,3,10,0),
DT.datetime(2013,12,2,12,0),
DT.datetime(2013,12,2,14,0),
]})
「カール」と「マーク」が何かを購入した日を、対応する購入日を含めて効率的に検索したい。たとえば、このように
Date_1 Buyer_1 Date Buyer
Day
2013-09-01 2013-09-01 13:00:00 Carl 2013-09-01 13:05:00 Mark
2013-12-02 2013-12-02 14:00:00 Carl 2013-12-02 12:00:00 Mark
そのために、現在次のコードを使用しています。
df['Day'] = df.Date.map(lambda t: t.date())
df = df.set_index('Day')
day1 = df[df.Buyer == 'Carl'][['Date', 'Buyer']]
day2 = df[df.Buyer == 'Mark'][['Date', 'Buyer']]
test1 = day1.join(day2, lsuffix='_1')
test1 = test1.dropna()
ただし、このコードは正しく実行されません (timeit.timeit(mytest, number=1000)) ~ 4 秒
この計算のパフォーマンスを向上させ、読みやすさを維持する方法を知っている人はいますか?
助けていただければ幸いです。
アンディ