pandas 无法调用显示(〈class 'int'>)[已关闭]

6jjcrrmo  于 2023-01-01  发布在  其他
关注(0)|答案(1)|浏览(121)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
3天前关闭。
Improve this question
我有一个名为datasetpandas DataFramedataset有一个列'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
1sbrub3j

1sbrub3j1#

要检查一列中的值是否同时出现在两个列表中,可以使用&和方法.isin()

dataset["control_treatment"] = dataset['account_id'].isin(ct1) & dataset['account_id'].isin(control1)
dataset["control_treatment"] = dataset["control_treatment"].astype(int)

相关问题