gpt4 book ai didi

python - 使用字典映射将 Pandas 数据框的值替换为列表?

转载 作者:行者123 更新时间:2023-12-05 08:35:53 25 4
gpt4 key购买 nike

如果我们有一个 pandas 数据框和一个用于数据框中值的映射字典,则可以像这样使用字典替换数据框中的值作为映射:

In: df
Out:
Col1 Col2
0 a c
1 b c
2 b c

In: key
Out: {'a': 1, 'b': 2, 'c': 3}

In: df.replace(key)
Out:
Col1 Col2
0 1 3
1 2 3
2 2 3

当映射字典以列表作为值时,如何完成类似的转换?例如:


In: key
Out: {'a': [1, 0, 0], 'b': [0, 1, 0], 'c': [0, 0, 1]}

In: df.replace(key)
ValueError: NumPy boolean array indexing assignment cannot assign 3 input values to the 1 output values where the mask is true

在此示例中,最终目标是拥有一个具有 3 行和 6 列的新数据框:


1 0 0 0 0 1
0 1 0 0 0 1
0 1 0 0 0 1

最佳答案

IIUC,你可以applymap+explode+reshape:

df2 = df.applymap(key.get).explode(list(df.columns))
df2 = (df2
.set_index(df2.groupby(level=0).cumcount(), append=True)
.unstack(level=1)
)

输出:

  Col1       Col2      
0 1 2 0 1 2
0 1 0 0 0 0 1
1 0 1 0 0 0 1
2 0 1 0 0 0 1

注意。重置列:df2.columns = range(df2.shape[1])

   0  1  2  3  4  5
0 1 0 0 0 0 1
1 0 1 0 0 0 1
2 0 1 0 0 0 1

关于python - 使用字典映射将 Pandas 数据框的值替换为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71500684/

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