python - 用其他列的索引替换列表类型的列项
问题描述
我有一个这样的数据框,
df
col1 col2 col3 col4
1 [1,2] [0,0,0,0] [0,0,0,0]
0 [2,3] [0,0,0,0] [0,0,0,0]
现在我想根据 col1 和 col2 的索引将 col3、col4 列表项替换为 1。所以数据框应该看起来像,
col1 col2 col3 col4
1 [1,2] [0,1,0,0] [0,1,1,0]
0 [2,3] [1,0,0,0] [0,0,1,1]
我正在尝试使用应用函数或自定义函数但没有得到想要的结果,正在寻找一些熊猫方法来有效地做到这一点。
解决方案
在 pandas 中使用 list 不是很有效,这里是可能的解决方案:
def f(x):
x['col4'] = [1 if i in x['col2'] else 0 for i, y in enumerate(x['col4'])]
x['col3'] = [1 if i == x['col1'] else 0 for i, y in enumerate(x['col3'])]
return x
df = df.apply(f, axis=1)
print (df)
col1 col2 col3 col4
0 1 [1, 2] [0, 1, 0, 0] [0, 1, 1, 0]
1 0 [2, 3] [1, 0, 0, 0] [0, 0, 1, 1]
推荐阅读
- java - Spring Boot HTTPS 调用抛出 SunCertPathBuilderException
- jquery - 重新排序 ap:dataTable 中的行会导致 javascript“未捕获类型错误:this.tbody.sortable 不是函数”
- amazon-web-services - EC2 Auto Scaling 组的实例刷新低于正常阈值
- mysql - Mysql:如何根据转储文件创建新数据库?
- unit-testing - 如何使用 XunitTest Asp.net Core 3.1 中的 ExcludeCodeCoverage 属性从代码覆盖率中排除异步方法?
- html - 在 svg 中插入的图像未在旧版 Safari 和 Firefox 中显示
- java - 在javaFX中翻译转换重置位置
- mongodb - 拉出一个子文档并返回它的值
- javascript - 如何在 nextjs 中添加字体 ttf 文件
- google-sheets - 将范围引用到单元格