gpt4 book ai didi

python - 如何基于其他数据框在数据框中创建连接?

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:24 24 4
gpt4 key购买 nike

我有 2 个数据框。一个包含学生批处理详细信息,另一个包含分数。我想加入 2 个数据框。

Dataframe1 包含

+-------+-------+-------+--+
| s1 | s2 | s3 | |
+-------+-------+-------+--+
| Stud1 | Stud2 | Stud3 | |
| Stud2 | Stud4 | Stud1 | |
| Stud1 | Stud3 | Stud4 | |
+-------+-------+-------+--+

Dataframe2 包含

+-------+-------+----------+--+
| Name | Point | Category | |
+-------+-------+----------+--+
| Stud1 | 90 | Good | |
| Stud2 | 80 | Average | |
| Stud3 | 95 | Good | |
| Stud4 | 55 | Poor | |
+-------+-------+----------+

我正在尝试为每个学生在同一数据集中映射标记。

+-------+-------+-------+----+----+----+
| Stud1 | Stud2 | Stud3 | 90 | 80 | 95 |
| Stud2 | Stud4 | Stud1 | 80 | 55 | 90 |
| Stud1 | Stud3 | Stud4 | 90 | 95 | 55 |
+-------+-------+-------+----+----+----+

我试过下面的代码,但它正在一个一个地替换值。

s = df3['p1'].map(dfnamepoints.set_index('name')['points'])
df4 = df3.drop('p1', 1).assign(points = s)

最佳答案

如果 df3 中的所有值都存在于列 Name 中,解决方案同样有效:

s = dfnamepoints.set_index('Name')['Point']
df = df3.join(df3.replace(s).add_prefix('new_'))

或者:

df = df3.join(df3.apply(lambda x: x.map(s)).add_prefix('new_'))

或者:

df = df3.join(df3.applymap(s.get).add_prefix('new_'))

print (df)
s1 s2 s3 new_s1 new_s2 new_s3
0 Stud1 Stud2 Stud3 90 80 95
1 Stud2 Stud4 Stud1 80 55 90
2 Stud1 Stud3 Stud4 90 95 55

如果不是,则输出不同 - 对于不存在的值 (Stud1) 获取 NaNs:

print (dfnamepoints)
Name Point Category
0 Stud2 80 Average
1 Stud3 95 Good
2 Stud4 55 Poor

df = df3.join(df3.applymap(s.get).add_prefix('new_'))
#or
df = df3.join(df3.applymap(s.get).add_prefix('new_'))

print (df)
s1 s2 s3 new_s1 new_s2 new_s3
0 Stud1 Stud2 Stud3 NaN 80 95.0
1 Stud2 Stud4 Stud1 80.0 55 NaN
2 Stud1 Stud3 Stud4 NaN 95 55.0

对于 replace 获取原始值:

df = df3.join(df3.replace(s).add_prefix('new_'))
print (df)
s1 s2 s3 new_s1 new_s2 new_s3
0 Stud1 Stud2 Stud3 Stud1 80 95
1 Stud2 Stud4 Stud1 80 55 Stud1
2 Stud1 Stud3 Stud4 Stud1 95 55

关于python - 如何基于其他数据框在数据框中创建连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54607098/

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