当前位置: 首页 > 知识库问答 >
问题:

在Python中查找并加入具有多个列名的数据帧

子车高歌
2023-03-14

df1:

col1        col2        col3        col4        col5        col6        col7        col8 
7865                                                                                abc
                                    7269                                            def
            8726                                                                    ghi
                                                                        986         jkl
                                                7689                                mno
                        8762                                                        pqr
                                                                                    stu
                        9698                                                        vwx
            3568                                                                    yz

df2:

Scientific value         mapping_value
1                        8726
2                        9698
3                        3568
4                        986
5                        7269

我想将df1中的“col1、col2、col3、col4、col5、col6、col7”列值与df2中的“mapping_value”列相匹配,并在df1中创建一个名为“Scientific value”的新列,该列将包含来自df2中“Scientific value”列的条目。

输出:

col1        col2        col3        col4        col5        col6        col7        col8   Scientific value
7865                                                                                abc    
                                    7269                                            def    5
            8726                                                                    ghi    1
                                                                        986         jkl    4
                                                7689                                mno
                        8762                                                        pqr
                                                                                    stu
                        9698                                                        vwx    2
            3568                                                                    yz     3

在这种情况下会合并工作。。或者也很乐意学习其他有效的方法!!

谢谢!

共有1个答案

韦安顺
2023-03-14

如果没有最后一个解决方案的任何列每行只有一个数字,则应简化为一列的summaxmin函数,因此可以使用系列。地图

s = df2.set_index('mapping_value')['Scientific value']
df1['Scientific value'] = df1.iloc[:, :-1].max(axis=1).map(s)
#if empty string are not missing values
#df1['Scientific value'] = df1.iloc[:, :-1].replace('',np.nan).max(axis=1).map(s)

如果可能,多个值首先通过DataFrame按位置选择。iloc,然后通过数据帧重塑形状。堆栈,按系列映射。映射,删除不匹配值和上次聚合列表中可能缺少的值:

s = df2.set_index('mapping_value')['Scientific value']
df1['Scientific value'] = (df1.iloc[:, :-1]
                              .stack()
                              .map(s)
                              .dropna()
                              .groupby(level=0)
                              .agg(list))
 类似资料:
  • 问题内容: 我试图找到具有重复值,但仅基于选定的列数,而不是单个列或整个行的行。例如,如果我的表如下所示: 我的问题是: 查找行的“地址和状态”字段与另一行的“地址和状态”字段匹配的行的所有ID。 该查询的答案将是: 有任何想法吗? 意见建议: 如何从单个表中选择同一行中的多列值 问题答案: 请尝试以下方法:

  • 我正在实施一个项目,其中MySql数据被导入到hdfs使用sqoop。它有将近30张桌子。我通过推断模式和注册为临时表来读取每个表作为数据帧。我做这件事有几个问题...1.假设df1到df10的表需要实现几个连接。在MySQL中,查询将是而不是使用是否有其他连接所有数据帧有效地基于条件...

  • 我有一个火花数据框。我想将多列连接成一列,其中一些行没有concat中提到的一些列 如果我使用 它只返回 因为输入的第二行和第三行都没有 colA 和 colB 的值

  • 问题内容: 我可以在其他具有相同列名的数据框的右边追加一个数据框吗 问题答案: 您可以像这样连接两个数据框。 如果您正在寻找联盟,则可以执行以下操作。 Spark 2.0,已重命名为

  • 我尝试单击以下元素,类名等于<code>“clean right”: 如何使用<code>驱动程序定位它。find_element_by_class_name()

  • 我在节点js代码中有2个数组 我试着用一个数组来做。它成功地执行了,但它不能与2个数组一起工作。我应该怎么做呢? 我为一个数组编写的Mysql插入查询如下所示: