You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Pandas DataFrame中创建哑变量:判断IP是否在指定Series中

解决方法:给DataFrame新增黑名单标记列

没问题,这事儿用Pandas的isin()方法就能轻松搞定,我给你写个完整的可运行示例,再拆解每一步的作用:

完整代码示例

import pandas as pd

# 构造你的原始DataFrame
dict_data = {'ip': {0: 103022, 1: 114221, 2: 47902, 3: 23550, 4: 84644}, 
             'os': {0: 23, 1: 19, 2: 17, 3: 13, 4: 19}}
df = pd.DataFrame(dict_data)

# 构造黑名单Series(这里补全了示例数据,你替换成自己的即可)
blacklist = pd.Series([114221, 23550])

# 新增标记列:IP在黑名单里为1,否则为0
df['is_blacklisted'] = df['ip'].isin(blacklist).astype(int)

# 查看结果
print(df)

运行结果

ip  os  is_blacklisted
0  103022  23               0
1  114221  19               1
2   47902  17               0
3   23550  13               1
4   84644  19               0

步骤解释

  • df['ip'].isin(blacklist):这一步会遍历DataFrame里的每个IP,检查它是否存在于黑名单Series中,返回一个布尔值的Series(True表示在黑名单里,False表示不在)。
  • .astype(int):把布尔值转换成整数类型,True会变成1,False会变成0,完美匹配你要的标记规则。
  • 赋值给新列:直接把处理后的结果赋值给df['is_blacklisted'],Pandas会自动把这一列追加到原始DataFrame里。

如果你的黑名单是列表、数组这类其他可迭代格式,也不用改代码,isin()方法完全兼容,非常灵活。

内容的提问来源于stack exchange,提问作者Raul Guarini Riva

火山引擎 最新活动