パンダデータフレーム内の特定の観測値(時系列)を除去する簡単な方法は?

whj123:

私はYYQQのフォーマットである「日付」と呼ばれる列、例えば1702があるapandasデータフレームを持っています。

列には、時系列です。ただし、一部の欠測があります。データフレームを日付1702で破壊されたの下に例えば、私はこれと異なる日付で破砕し、それぞれのような複数のデータフレームを持っています。私は混乱した後の日付を取得したいです。以下の例では、私はちょうどそれを行うための簡単かつ神託の方法はあります上と1702の後の行をしたいですか?

date
1301
1302
1303
1304
1401
1702
1703
1704
1801
1802
rahlf23:

まずは、あなたのデータフレームを再作成しましょうと(年間表現するために新しい列を作成するYY()と四半期QQごとのそれぞれの日のために):

import pandas as pd

df = pd.DataFrame({'date': [1301,1302,1303,1304,1401,1702,1703,1704,1801,1802]})

df[['YY','QQ']] = df['date'].astype(str).str.extract(r'(\d{2})(\d{2})')

今、私たちは持っています:

   date  YY  QQ
0  1301  13  01
1  1302  13  02
2  1303  13  03
3  1304  13  04
4  1401  14  01
5  1702  17  02
6  1703  17  03
7  1704  17  04
8  1801  18  01
9  1802  18  02

レッツは、その四半期の月に四半期ごとに変換し、我々はに戻って変換することができますdatetimeシリーズと3ヶ月を超えた最初の時間差を見つけます。最後に、我々は(中断すなわち)このブールマスクを満たすことを最初のインデックスに基づいてデータフレームをスライスすることができます:

df['MM'] = df['QQ'].astype(int)*3

df['date_t'] = pd.to_datetime(df['YY'].astype(str)+df['MM'].astype(str), format='%y%m')

df.iloc[df[df['date_t'].diff().astype('timedelta64[M]')>3].index[0]:]

収量:

   date  YY  QQ  MM     date_t
5  1702  17  02   6 2017-06-01
6  1703  17  03   9 2017-09-01
7  1704  17  04  12 2017-12-01
8  1801  18  01   3 2018-03-01
9  1802  18  02   6 2018-06-01

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=294094&siteId=1