大PandasDF中变量提取的最有效方法

2024-10-03 17:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的截图中,我们有3个不同的能量点,ID01,ID18和ID31。它们是一种伪变量类型的格式,为了可视化的目的,我只想创建一个名为“Sites”的列,我可以使用它。你会看到我很快做了这个循环,但它看起来效率非常低。关于如何以最快的方式实现这一点有什么建议吗?在

Screenshot


Tags: 目的类型可视化格式方式建议sites能量
1条回答
网友
1楼 · 发布于 2024-10-03 17:26:45

设置

data = pd.DataFrame([
    [1, 0, 0],
    [0, 1, 0],
    [0, 0, 1],
    [1, 0, 0],
    [0, 1, 0]
], columns=['ID01', 'ID18', 'ID31']).assign(A=1, B=2)

data

   ID01  ID18  ID31  A  B
0     1     0     0  1  2
1     0     1     0  1  2
2     0     0     1  1  2
3     1     0     0  1  2
4     0     1     0  1  2

dot包含字符串和对象的产品

如果这些值是真正的伪值0或{},则可以使用此方法

^{pr2}$

argmax切片

这是可行的,但如果数据不是如问题所示,则可能会产生意外的结果。在

def undummy(d):
    return d.columns[d.values.argmax(1)]

data.assign(Site=data.filter(regex='^ID').pipe(undummy))

   ID01  ID18  ID31  A  B  Site
0     1     0     0  1  2  ID01
1     0     1     0  1  2  ID18
2     0     0     1  1  2  ID31
3     1     0     0  1  2  ID01
4     0     1     0  1  2  ID18

相关问题 更多 >