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()处理结果都不对
没看懂 我猜是一个CFPS的datafram,列qa701对应入党年份,新增列PartyYN是否党员,PartyDummy也是?
你想解决问题需要提供更多的信息,比如CFPS的结构,以及更多的代码,不然看得一团雾水。 txxcat 发表于 2020-4-23 14:40
我猜是一个CFPS的datafram,列qa701对应入党年份,新增列PartyYN是否党员,PartyDummy也是?
你想解决问题 ...
对的,CFPS是一个dataframe,qa701是CFPS里的一列。
PartyDummy和PartyYN都是我要生成的新变量,用1和0表示是否为党员。这俩单词只是我自己设置的变量名而已,一个意思。 txxcat 发表于 2020-4-23 14:40
我猜是一个CFPS的datafram,列qa701对应入党年份,新增列PartyYN是否党员,PartyDummy也是?
你想解决问题 ...
这个题我已经做出来了,其实就是想请大神看看,我展示的1-6行代码和10-14行代码的区别在哪里。 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
txxcat 发表于 2020-4-23 17:36
试试:
这个也可以,谢谢!
页:
[1]