gpt4 book ai didi

python - Pandas - 使用其他列值作为列名选择列

转载 作者:太空狗 更新时间:2023-10-29 21:41:42 27 4
gpt4 key购买 nike

我有一个包含一列的数据框,我们称它为“名称”。 “名称”具有其他列的名称。我想添加一个新列,每一行的值都基于该“名称”列中包含的列名。

例子:

输入数据框:pd.DataFrame.from_dict({"a": [1, 2, 3,4], "b": [-1,-2,-3,-4], "names":['a' ,'b','a','b']})

  a  |  b  | names | --- | --- | ----  |  1  |  -1 | 'a'   |  2  |  -2 | 'b'   |  3  |  -3 | 'a'   |  4  |  -4 | 'b'   |

输出数据框:pd.DataFrame.from_dict({"a": [1, 2, 3,4], "b": [-1,-2,-3,-4], "names":['a' ,'b','a','b'], "new_col":[1,-2,3,-4]})

  a  |  b  | names | new_col |  --- | --- | ----  | ------  |  1  |  -1 | 'a'   |    1    |  2  |  -2 | 'b'   |   -2    |  3  |  -3 | 'a'   |    3    |  4  |  -4 | 'b'   |   -4    |

最佳答案

您可以使用 lookup :

df['new_col'] = df.lookup(df.index, df.names)
df
# a b names new_col
#0 1 -1 a 1
#1 2 -2 b -2
#2 3 -3 a 3
#3 4 -4 b -4

编辑

lookup 已被弃用,这是目前推荐的解决方案:

idx, cols = pd.factorize(df['names'])
df.reindex(cols, axis=1).to_numpy()[np.arange(len(df)), idx]

关于python - Pandas - 使用其他列值作为列名选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45487312/

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