我创建了一个独特的成员级数据帧,如下所示:
memberid codes cost
memberA {c1, c2} 100.0
memberB {c2, c3} 120.0
memberC {c1, c5} 200.0
{cd1>的值是^的集合。我试图得到个别代码和成本之间的一些相关性,以便最终使用我所拥有的一些其他特性来构建一个预测模型。在熊猫之外,我创建了一个Counter()
,它按流行程度对代码进行排序:
在common_codes
中总共有大约500个代码,我想创建相同数量的虚拟变量,但我不确定如何在Pandas中实现。我试过这样的方法:
for code in common_codes:
if code in df['codes'].values:
df['has_'+code] = 1
else:
df['has_'+code] = 0
但它不起作用(所有的伪列都是零)。有没有一种简单的方法来填充这些伪列,因为get_dummies
不能使用,因为潜在伪变量的“源”位于数据帧之外?除非有一个更简单的方法来做我所寻找的一切,只使用熊猫。在
编辑:
这些代码是诊断代码,因此它们具有诸如C801
、R911
等值。生成的数据帧应如下所示:
memberid codes cost has_c1 has_c2 has_c3
memberA {c1, c2} 100.0 1 1 0
memberB {c2, c3} 120.0 0 1 1
memberC {c1, c5} 200.0 1 0 0
我也尝试过:
for code in common_codes:
df['has_'+code] = np.where(code in df['codes'], 1, 0)
但这也没用。在
示例数据帧的代码:
data = {'memberid': ['memberA', 'memberB', 'memberC'],
'codes': [{c1, c2}, {c2, c3}, {c1, c5}],
'cost': [100.0, 120.0, 200.0]}
df = pd.DataFrame(data, columns = ['memberid', 'codes', 'cost'])
一种方法是使用^{} 。在
稍微复杂的是您需要首先将},因为{}需要有序的集合。在
set
转换为{相关问题 更多 >
编程相关推荐