我在python中创建了一个函数,并试图在SQL中编写相同的函数。
import pandas as pd
df['asofdate'] = pd.to_datetime(df['asofdate'])
df['month_year'] = df['asofdate'].dt.to_period('M')
lista_dat = df['month_year'].unique()
dataframe = pd.DataFrame()
for i in lista_dat:
new = df[df['month_year'] <= i]
new = new.drop_duplicates(subset=['issuer_id'], keep='last')
new['month_year'] = i
dataframe = pd.concat([new, dataframe])
字符串
基本上,我有一个带有issuer_id和asofdate的数据集。我想创建一个数据集,在那里我将有累积数据集。让我们假设我们有Jan 2023,Feb 2023和Mar 2023日期以及asofdate中的日期。新表将有month_year列。所以Jan 2023将只有Jan 2023,2023年2月将有2023年1月和2月,2023年3月将有2023年1月,2月和3月。我想保持最近的记录。
为了验证SQL查询是否正确:在创建数据集之后,在我们将数据分组到month_year列之后,不同的issuer_id将在整个期间内增加。
Starting table
Expected final table的
我无法循环通过asofdate列中的非重复值。
1条答案
按热度按时间lnlaulya1#
在cte中获取不同的年份和月份,然后加入例如
字符串
https://dbfiddle.uk/2BNtRz5r
如果要创建表,
型
https://dbfiddle.uk/q1VitS14的