Reg*_*hew 2 python dynamic multiple-columns pandas
我喜欢通过选择不同列中包含的列名称来选择要处理的单元格。为了清楚起见,下面给出了输入和输出。列“a”包含用于将每行的值设置为 None 的列名称。我尝试编写如下代码,但不断出现错误。
df1 = pd.DataFrame({'a': ['a1', 'a2', 'a4', 'a1'],
'a1': [1, 3, 1, 0],
'a2': ['9', '3', '1', '4'],
'a3': ['8', '5', '4', '6'],
'a4': ['8', '5', '3', '3']})
df2 = df1.apply(lambda x: x['a']=None, axis=1)
Run Code Online (Sandbox Code Playgroud)
输入
a a1 a2 a3 a4
0 a1 1 9 8 8
1 a2 3 3 5 5
2 a3 1 1 4 3
3 a1 0 4 6 3
Run Code Online (Sandbox Code Playgroud)
输出
a a1 a2 a3 a4
0 a1 None 9 4 9
1 a2 3 None 5 5
2 a4 1 1 5 None
3 a1 None 4 6 0
Run Code Online (Sandbox Code Playgroud)
检查mask并numpy广播
out = df1.mask(df1.a.values[:,None]==df1.columns.values,'None')
Out[80]:
a a1 a2 a3 a4
0 a1 None 9 8 8
1 a2 3 None 5 5
2 a4 1 1 4 None
3 a1 None 4 6 3
Run Code Online (Sandbox Code Playgroud)
或者我们尝试
m = np.equal.outer(df1.a.values,df1.columns.values)
out = df1.mask(m,'None')
Run Code Online (Sandbox Code Playgroud)