15169026698 发表于 2020-4-23 11:45:04

PY数据分析

问题背景:
数据是2010年的CFPS调研(中国家庭追踪调查)中的成人部分,源数据为stata文件,导入Python后变成了名为CFPS的数据框对象。
在原数据中没有直接问道“你是否为党员”,但有个变量(qa701)是“你的入党年份”,如果不是党员的话本题不适用,是党员会填一个1921年以后的年份。

题目要求:
设置一个新的变量,表示被访者是否为党员,党员为1,否则为0.

我的困惑:
我有两个方法,但前者正确,后者不对,请大神看一下我的两个代码之间的区别。
def party(x):
    if x > 1921:
      return 1
    else:
      return 0
CFPS.PartyDummy = CFPS.qa701.apply(party)

##############

for i in list(CFPS.qa701):
    if i > 1921:
      CFPS.PartyYN = 1
    else:
      CFPS.PartyYN = 0
# CFPS.qa701是一个Series,无论是否list()处理结果都不对

zltzlt 发表于 2020-4-23 13:06:02

没看懂

txxcat 发表于 2020-4-23 14:40:59

我猜是一个CFPS的datafram,列qa701对应入党年份,新增列PartyYN是否党员,PartyDummy也是?
你想解决问题需要提供更多的信息,比如CFPS的结构,以及更多的代码,不然看得一团雾水。

15169026698 发表于 2020-4-23 15:46:44

txxcat 发表于 2020-4-23 14:40
我猜是一个CFPS的datafram,列qa701对应入党年份,新增列PartyYN是否党员,PartyDummy也是?
你想解决问题 ...

对的,CFPS是一个dataframe,qa701是CFPS里的一列。
PartyDummy和PartyYN都是我要生成的新变量,用1和0表示是否为党员。这俩单词只是我自己设置的变量名而已,一个意思。

15169026698 发表于 2020-4-23 15:55:00

txxcat 发表于 2020-4-23 14:40
我猜是一个CFPS的datafram,列qa701对应入党年份,新增列PartyYN是否党员,PartyDummy也是?
你想解决问题 ...

这个题我已经做出来了,其实就是想请大神看看,我展示的1-6行代码和10-14行代码的区别在哪里。

txxcat 发表于 2020-4-23 17:36:35

15169026698 发表于 2020-4-23 15:55
这个题我已经做出来了,其实就是想请大神看看,我展示的1-6行代码和10-14行代码的区别在哪里。

试试:
YN=[]
for i in list(CFPS.qa701):
    YN.append(1 if i > 1921 else 0)
CFPS.PartyYN = YN

15169026698 发表于 2020-4-23 22:03:23

txxcat 发表于 2020-4-23 17:36
试试:

这个也可以,谢谢!
页: [1]
查看完整版本: PY数据分析