首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python中具有多个列名的查找和连接数据格式

使用Python中具有多个列名的查找和连接数据格式
EN

Stack Overflow用户
提问于 2020-04-04 05:22:23
回答 1查看 175关注 0票数 2

df1:

代码语言:javascript
复制
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:

代码语言:javascript
复制
Scientific value         mapping_value
1                        8726
2                        9698
3                        3568
4                        986
5                        7269

我希望将"col1、col2、col3、col4、col5、col6、col7“列值与df2中的"mapping_value”列相匹配,并在df1中创建一个名为“科学值”的新列,该列将在df2中包含“科学价值”列中的条目。

输出:

代码语言:javascript
复制
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

将合并工作在这个case..or将很高兴学习任何其他有效的方法以及!!

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-04 05:26:56

如果没有最后解决方案的任何列的每一行只有一个编号,则应该通过summaxmin函数对一列进行简化,因此可以使用Series.map

代码语言:javascript
复制
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按位置选择,然后由DataFrame.stack重新组合,通过Series.map映射,删除可能丢失的不匹配值和最后的聚合列表:

代码语言:javascript
复制
s = df2.set_index('mapping_value')['Scientific value']
df1['Scientific value'] = (df1.iloc[:, :-1]
                              .stack()
                              .map(s)
                              .dropna()
                              .groupby(level=0)
                              .agg(list))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61024128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档