我已经导入了一个json文件,现在有了一个数据框,其中一列(代码)是一个列表
index year gvkey code
0 1998 15686 ['TAX', 'ENVR', 'HEALTH']
1 2005 15372 ['EDUC', 'TAX', 'HEALTH', 'JUST']
2 2001 27486 ['LAB', 'TAX', 'HEALTH']
3 2008 84967 ['HEALTH','LAB', 'JUST']
我想得到的东西如下:
index year gvkey TAX ENVR HEALTH EDUC JUST LAB
0 1998 15686 1 1 1 0 0 0
1 2005 15372 1 0 1 0 1 0
2 2001 27486 1 0 1 0 1 0
3 2008 84967 0 0 1 0 1 1
在Pandas convert a column of list to dummies之后,我尝试了以下代码(其中df是我的数据帧):
s = pd.Series(df["code"])
l = pd.get_dummies(s.apply(pd.Series).stack()).sum(level=0)
我正确地获得了数据的第二部分(变量TAX、ENVR、HEALTH、EDUC、JUST和LAB),但失去了第一部分(year和gvkey)
如何保持年份和gvkey变量
您可以通过以下方法执行此操作:
方法1:将列转换为数据帧并获取Dummie,然后
groupby
onaxis=1
并获取max:方法2:用
|
连接列列表并使用series.str.get_dummies
方法3:使用
concat
的方法我认为更好的解决方案是将^{} 与^{} 和^{} 一起使用:
如果性能很重要,请使用^{} :
您的解决方案是可能的,but slow,因此最好避免它,同时
sum
只针对唯一值,因为一般解决方案需要max
:相关问题 更多 >
编程相关推荐