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
在这种情况下会合并工作。。或者也很乐意学习其他有效的方法!!
谢谢!
如果没有最后一个解决方案的任何列每行只有一个数字,则应简化为一列的sum
,max
,min
函数,因此可以使用系列。地图
:
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插入查询如下所示: