gpt4 book ai didi

python - 通过查找多个列值进行合并

转载 作者:行者123 更新时间:2023-12-03 16:57:33 25 4
gpt4 key购买 nike

我在 Pandas 中有以下 2 个数据框形式的表;
这是所有可能组合的列表:

Table A:
0 1 2
+---+----+----+
0| A |None|None|
+---+----+----+
1| B |None|None|
+---+----+----+
2|...| | |
+---+----+----+
3| A | C | D |
+---+----+----+
4| B | C | D |
+---+----+----+
这些是变量的关联值:
Table B:
0 1
+---+---+
0| A | 5 |
+---+---+
1| B | 2 |
+---+---+
2| C | 7 |
+---+---+
3| D | 4 |
+---+---+
我需要的是这样的:
   0    1    2   3
+---+----+----+---+
0| A |None|None| 5 |
+---+----+----+---+
1| B |None|None| 2 |
+---+----+----+---+
2|...| | | |
+---+----+----+---+
3| A | C | D | 7 |
+---+----+----+---+
4| B | C | D | 7 |
+---+----+----+---+
通过从 Table A 中查找每个关联值可以找到第 3 列。 , 列 0 , 12Table B , 栏目 0并返回这些值中的最大值。
例如:
第 3 行显示了 A 的组合, CD .因此专栏 3查找 ATable B ,值为 5 ,然后查找 CTable B ,值为 7 .最后查找 DTable B ,值为 4 .在这 3 个数字中,7 是最大的,因此它返回。
到目前为止我试过 pandas.merge没有运气
更新:
我试过这个:
Final=df1.insert(3,column='min space',value=df1.join(df2.set_index(0),on=0).max())
但它只返回 None并且不考虑 df1 中的多列,如果我尝试添加多列; [0,1,2]它告诉我我需要相同数量的列

最佳答案

您可以将所有单元格转换为数字(通过关联的 df),然后获取每行最大值的列。

import pandas as pd
df = pd.DataFrame({ # original df
0:['A', 'B', 'A', 'B',],
1:[None, None, 'C', 'C',],
2:[None, None, 'D', 'D',],
})
rdf = pd.DataFrame({ # associated values
0:['A', 'B', 'C', 'D',],
1:[5, 2, 7, 4,],
})

tdf = df # copy the original df
rdf = rdf.set_index(0)[1] # set index of rdf for next line
tdf = tdf[tdf.columns].replace(rdf) # replace all values in tdf by rdf
tdf[3] = tdf.max(axis=1) # column[3] = max of each row
df[3] = tdf[3] # add column[3] to original df
print(df)

0 1 2 3
0 A None None 5.0
1 B None None 2.0
2 A C D 7.0
3 B C D 7.0

关于python - 通过查找多个列值进行合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66809518/

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