gpt4 book ai didi

python - 当值存在时获取列索引作为值

转载 作者:行者123 更新时间:2023-11-30 21:56:16 25 4
gpt4 key购买 nike

我需要根据以下内容在我的表或单独的表中创建一些附加列:

我有一张 table

enter image description here

我需要创建其他列,其中列索引(列名称)将作为值插入。像这样:

enter image description here

如何在 pandas 中做到这一点?有任何想法吗?谢谢

最佳答案

如果仅需要 1 值的匹配列:

df = (df.set_index('name')
.eq(1)
.dot(df.columns[1:].astype(str) + ',')
.str.rstrip(',')
.str.split(',', expand=True)
.add_prefix('c')
.reset_index())
print (df)

说明:

想法是为被列名称替换的值创建带有 True 的 bool 掩码 - 因此与 DataFrame.eq 进行比较通过 1 并使用矩阵乘法 DataFrame.dot由所有列组成,没有第一个列并添加分隔符。然后通过 Series.str.rstrip 删除最后一个跟踪分隔符并使用Series.str.split对于新列,将列名称更改为 DataFrame.add_prefix .

另一个解决方案:

df1 = df.set_index('name').eq(1).apply(lambda x: x.index[x].tolist(), 1)
df = pd.DataFrame(df1.values.tolist(), index=df1.index).add_prefix('c').reset_index()

关于python - 当值存在时获取列索引作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55536009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com