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