- 已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
3天前关闭。
Improve this question
我有一个名为dataset
的pandas DataFrame
。dataset
有一个列'account_id'
。如果'account_id'中的值在以下两个列表中,我需要一个新的虚拟列(0/1):
control1 = [933, 1101, 471, 577, 507, 1124, 1354, 1754, 18591, 11327, 10140, 1021769]
ct1 = [33, 101, 472,5077, 9507, 1124, 13584, 1574, 18591, 10327, 10140, 10276, 10635, 13366, 10480, 103961, 103979, 1047]
因此,如果该数目在control1和ct1中,则所创建的新的虚拟列应当具有1,例如control1 = [2, 4, 6]
ct1 = [2,9,8]
dummy = [1,0,0]
我试过了
def control_treatment(dataset):
vals = dataset[dataset["account_id"].isin(ct1)]
vals= vals.withColumn("account_id", vals["account_id"].cast(IntegerType()))
if vals[vals['account_id'].isin(control)]:
return 1
else:
return 0
return control_treatment
1条答案
按热度按时间1sbrub3j1#
要检查一列中的值是否同时出现在两个列表中,可以使用
&
和方法.isin()