楼主: 18004817351
7480 16

[时间序列问题] 如何保留一个样本同一年份下最后一次数据 [推广有奖]

11
黃河泉 在职认证  发表于 2021-12-1 08:26:13
18004817351 发表于 2021-11-30 20:03
刚刚用dataex给您复制了一下我的数据,可能不是很清楚,我重新说一下我的需求和我的数据吧。数据如下,我 ...
  1. gen date = date(riqi, "YMD")
  2. gen year = yofd(date)
  3. bys Stkcd year (date): keep if date == date[_N]
复制代码
由王非教授提供的建议:

12
小兔跑 学生认证  发表于 2023-3-22 19:16:51
搜了好久终于搞出来了!借鉴了6楼和10楼的答案,希望能帮助到后面的小伙伴们
gen date = date(riqi, "YMD")
gen year=substr(riqi,1,4)
tsset Stkcd date
bys Stkcd year:keep if _n==_N

13
LMH01 发表于 2023-3-22 22:17:37
黃河泉 发表于 2021-11-30 07:57
1. 这应该是很简单的问题,请提供一点资料以便尝试。2. 你若要问程序,建议请用 (ssc install) dataex 附上 ...
黄老师您好,请问只研究上市前一年的数据是面板数据吗

14
今天没课吧 学生认证  发表于 2023-5-8 23:09:25
小兔跑 发表于 2023-3-22 19:16
搜了好久终于搞出来了!借鉴了6楼和10楼的答案,希望能帮助到后面的小伙伴们
gen date = date(riqi, "YMD ...
请问YMD是什么意思

15
再眠一秋 发表于 2024-3-12 16:14:03
今天没课吧 发表于 2023-5-8 23:09
请问YMD是什么意思
年,日,月的意思,生成时间变量

16
再眠一秋 发表于 2024-3-12 16:14:21
再眠一秋 发表于 2024-3-12 16:14
年,日,月的意思,生成时间变量
说错了,年月日

17
赵安豆 发表于 2024-6-21 16:08:03
在处理这类问题时,可以使用Pandas库中的函数来实现。首先将日期列转换为日期时间类型(datetime),然后根据年份分组并筛选出每一年的最后一条记录。以下是一个可能的Python代码示例:

```python
import pandas as pd

# 假设df是你的DataFrame,包含code, riqi和volue三列数据。
# df = pd.read_csv('your_file.csv') # 如果数据是从CSV文件读取的话。

df['riqi'] = pd.to_datetime(df['riqi'])  # 将日期列转换为datetime类型
df.set_index('riqi', inplace=True)       # 设置日期列为索引,便于按时间操作

# 按code和年份分组,并选择每一年的最后一条数据。
result = df.groupby([pd.Grouper(freq='Y'), 'code']).last()

# 如果需要将结果还原为常规DataFrame(即将riqi从索引转换回列)
result.reset_index(inplace=True)

print(result)
```

这段代码中,`groupby([pd.Grouper(freq='Y'), 'code'])`这一行是关键。它首先使用`pd.Grouper(freq='Y')`将日期分组到年份,然后按照'code'进行进一步的分组。`.last()`函数则选择每一年、每个代码下的最后一条数据。

如果运行这段代码后结果中riqi列的格式不符合你的要求(例如你想要的是'YYYY-MM-DD'这种格式),可以使用`dt.strftime('%Y-%m-%d')`来转换日期格式:

```python
result['riqi'] = result['riqi'].dt.strftime('%Y-%m-%d')
```

这样,你就可以得到一个DataFrame,其中包含了每个样本在同一年份下的最后一次数据。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-18 09:14