gpt4 book ai didi

python - 将数据帧值映射到另一个数据帧

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

我有这两个数据框

data1 = [[1,'A'],[2,'B'],[3,'C'],[4,'D'],[5,'E']]
data2 = [1,1,1,1,2,5,4,3]
df1 = pd.DataFrame(data1,columns = ['one','two'])
df2 = pd.DataFrame(data2,columns = ['one'])

我想将 one 列 df2 的所有值映射到 two 列 df1。简单来说,我想使用 df1 作为字典。我想要 df2 这样的输出

   one
0 A
1 A
2 A
3 A
4 B
5 E
6 D
7 C

我正在做这个

df2['one']= df2['one'].apply(lambda x: df1.two[df1.one == x])

这给了我输出

   one
0 A
1 A
2 A
3 A
4 NaN
5 NaN
6 NaN
7 NaN

所有 A 都是正确的,但为什么后面都是 NaN?

最佳答案

试试这个,比使用带有 lambda 函数的 apply 更好的语法和功能:

df2['one'].map(df1.set_index('one')['two'])

输出:

0    A
1 A
2 A
3 A
4 B
5 E
6 D
7 C
Name: one, dtype: object

为什么你的方法不起作用......看看输出:

df2['one'].apply(lambda x: df1.two[df1.one == x])

输出:

     0    1    2    3    4
0 A NaN NaN NaN NaN
1 A NaN NaN NaN NaN
2 A NaN NaN NaN NaN
3 A NaN NaN NaN NaN
4 NaN B NaN NaN NaN
5 NaN NaN NaN NaN E
6 NaN NaN NaN D NaN
7 NaN NaN C NaN NaN

由于 pandas 中的索引对齐,仅第一列 0. 被分配。在这里,您使用 pd.Series.apply 将 lambda 函数应用于系列的元素,并将其分配回数据帧,从而导致对齐错误问题。

关于python - 将数据帧值映射到另一个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62866683/

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