gpt4 book ai didi

python - 如何将数据框的列修改为值

转载 作者:行者123 更新时间:2023-12-02 02:24:46 25 4
gpt4 key购买 nike

我有两个数据框 df1 和 df2,其中 df1 具有列 p1、p2 和 p3。而数据帧 df2 则为 p1、p2 和 p3 分配了值。我想创建一个新的数据框(newdf1),其中 df1 中的值成为列,p1、p2 和 p3 是基于数据框 df2 的新值..

查询 df1 和 df2 为

df1 = pd.DataFrame({"user": ["user1", "user2", "user3"], "p1": ["A", "C", "B"],"p2": ["C", "E", "A"],"p3": ["D", "A", "C"],}, index=[0, 1, 2], )
df2 = pd.DataFrame({"N1": ["p1", "p2", "p3"],"N2": ["2", "3", "4"], }, index=[0, 1, 2], )

我的 df1 看起来像这样 enter image description here

df2 看起来像这样

enter image description here

虽然我想要的 newdf1 应该是这样的

enter image description here

(黄色突出显示新数据帧中 p1 的转换)

最佳答案

IIUC,您可以使用:

m = df1.melt('user')
m['variable'] = m['variable'].map(df2.set_index('N1')['N2'])
m.pivot('user', 'value', 'variable').fillna(0)

详细信息:

融化用户上的数据框

print(m)
user variable value
0 user1 p1 A
1 user2 p1 C
2 user3 p1 B
3 user1 p2 C
4 user2 p2 E
5 user3 p2 A
6 user1 p3 D
7 user2 p3 A
8 user3 p3 B

使用 df2 中的相应值映射variable列:

print(m)

user variable value
0 user1 2 A
1 user2 2 C
2 user3 2 B
3 user1 3 C
4 user2 3 E
5 user3 3 A
6 user1 4 D
7 user2 4 A
8 user3 4 C

旋转上述融化的数据框以 reshape :

value  A  B  C  D  E
user
user1 2 0 3 4 0
user2 4 0 2 0 3
user3 3 2 0 0 0

关于python - 如何将数据框的列修改为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65860704/

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