大きなデータフレームで作業しています。特定の日付を削除する効率的な方法を見つけるのに苦労しています。私がの測定値を特定の日付のから削除しようとしていることに注意してください。パンダのデータフレームから特定の日付を削除する最速の方法
df.ix['2016-04-22']
をし、その日からすべての行を引く:
パンダは、あなたが呼び出すことができ、この偉大な機能を有しています。しかし、すべての行を'2016-04-22 'から削除したい場合はどうすればよいですか?
私はこのような機能をしたい:私は日付のリストを排除したい場合は、何も
3210(しかし、それは動作しません)
?
は今、私は以下のソリューションいます
import numpy as np
import pandas as pd
from numpy import random
###Create a sample data frame
dates = [pd.Timestamp('2016-04-25 06:48:33'), pd.Timestamp('2016-04-27 15:33:23'), pd.Timestamp('2016-04-23 11:23:41'), pd.Timestamp('2016-04-28 12:08:20'), pd.Timestamp('2016-04-21 15:03:49'), pd.Timestamp('2016-04-23 08:13:42'), pd.Timestamp('2016-04-27 21:18:22'), pd.Timestamp('2016-04-27 18:08:23'), pd.Timestamp('2016-04-27 20:48:22'), pd.Timestamp('2016-04-23 14:08:41'), pd.Timestamp('2016-04-27 02:53:26'), pd.Timestamp('2016-04-25 21:48:31'), pd.Timestamp('2016-04-22 12:13:47'), pd.Timestamp('2016-04-27 01:58:26'), pd.Timestamp('2016-04-24 11:48:37'), pd.Timestamp('2016-04-22 08:38:46'), pd.Timestamp('2016-04-26 13:58:28'), pd.Timestamp('2016-04-24 15:23:36'), pd.Timestamp('2016-04-22 07:53:46'), pd.Timestamp('2016-04-27 23:13:22')]
values = random.normal(20, 20, 20)
df = pd.DataFrame(index=dates, data=values, columns ['values']).sort_index()
### This is the list of dates I want to remove
removelist = ['2016-04-22', '2016-04-24']
このループのためには、基本的に私が削除したい日付のインデックスをつかむ、メインデータフレームのインデックスからそれを排除し、積極的に選択し、残りの日付(すなわち、良い日付)をデータフレームから削除します。
for r in removelist:
elimlist = df.ix[r].index.tolist()
ind = df.index.tolist()
culind = [i for i in ind if i not in elimlist]
df = df.ix[culind]
もっと良い点はありますか?
は、私はまた、丸みを帯びた日付+ 1日でインデックス作成を試してみたので、このような何か:df[~((df['Timestamp'] < r+pd.Timedelta("1 day")) & (df['Timestamp'] > r))]
しかし、これは本当に厄介取得します(一日の終わりに)私はまだ使用しています特定のn日を削除する必要があるときのforループ。
もっと良い方法があるはずです。右?多分?
恐ろしい!完璧に動作します!あなたのお返事ありがとうございます! – Reid