楼主: 三浦春花
2646 4

[面板数据求助] 如何将某变量取1的所有年份该变量都取1? [推广有奖]

  • 1关注
  • 0粉丝

高中生

25%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
1.5006
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
252 点
帖子
13
精华
0
在线时间
24 小时
注册时间
2019-9-16
最后登录
2023-5-27

楼主
三浦春花 发表于 2023-4-7 16:32:35 来自手机 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
例如,year=2016时,某公司的一个变量inq=1,此时我想让该公司全部年份的inq都取1,或者生成一个新的变量treat,只要某一年这个公司的inq=1,该公司全部年份的treat=1,应该怎么操作呢?谢谢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:treat 怎么操作 year Eat ear

沙发
guanyifang50 发表于 2023-4-7 20:40:19
by id:gen a=sum(inq)
by id:gen treat=(a!=0)

藤椅
三浦春花 发表于 2023-5-27 11:12:48
guanyifang50 发表于 2023-4-7 20:40
by id:gen a=sum(inq)
by id:gen treat=(a!=0)
谢谢!

板凳
赵安豆 发表于 2024-5-10 16:02:54
您可以使用pandas库中的groupby和transform函数来实现这个任务。假设您的数据存储在一个名为df的DataFrame中,其中包含列'year', 'company_id' 和 'inq'。

首先,确保您的数据已经按照年份和公司ID排序:

```python
df = df.sort_values(['company_id', 'year'])
```

然后,您可以使用以下代码创建一个新的变量'treat':

```python
df['treat'] = (df.groupby('company_id')['inq'].transform('max') == 1).astype(int)
```

这段代码的工作原理是首先按'company_id'分组,然后检查每个公司的'inq'的最大值是否为1。如果是,那么'treat'将被赋值为1;否则,赋值为0。

如果您只想在年份等于2016且'inq'为1的公司中设置所有年份的'inq'为1,可以稍微修改代码:

```python
df.loc[(df['year'] == 2016) & (df.groupby('company_id')['inq'].transform('max') == 1), 'inq'] = 1
```

这将只改变满足条件的行的'inq'值。

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



报纸
我给你带路 发表于 2024-12-24 12:54:32
by id:egen treat=sum(inq)
replace treat=1 if treat!=0

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-24 03:03