我有一个这样的数据框,
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]
我正在尝试使用 apply 函数或自定义函数,但没有得到想要的结果,正在寻找一些 Pandas 方法来有效地做到这一点。
答案 0 :(得分:3)
在 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]