Skip to main content
 首页 » 编程设计

python之按 pandas 中的列名重新分类

2025年05月04日14langtianya

我想对 Pandas 数据框进行测试,并根据测试结果在相应的数据框中创建标志。我已经走到这一步了:

import numpy as np 
import pandas as pd 
 
 
matrix = pd.DataFrame({'a': [1, 11, 2, 3, 4], 'b': [5, 6, 22, 8, 9]}) 
flags = pd.DataFrame(np.zeros(matrix.shape), columns=matrix.columns) 
flag_values = pd.Series({"a": 100, "b": 200}) 
 
flags[matrix > 10] = flag_values  

但这会引发错误

ValueError: Must specify axis=0 or 1 

在这种情况下,我在哪里可以指定轴?有没有更好的方法来实现这一点?

编辑:

我在这个例子中为“flags”寻找的结果是

a    b 
0    0 
100  0 
0    200 
0    0 
0    0 

请您参考如下方法:

您可以定义 flags = (matrix > 10) * flag_values:

In [35]: (matrix > 10) * flag_values 
Out[35]:  
     a    b 
0    0    0 
1  100    0 
2    0  200 
3    0    0 
4    0    0 

这依赖于True having numeric value 1和 False 的数值为 0。 它还依赖于 Pandas 的漂亮 automatic alignment在执行算术运算之前基于标签的数据帧(和系列)。