首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何基于多种条件组合两只大熊猫数据集?

如何基于多种条件组合两只大熊猫数据集?
EN

Stack Overflow用户
提问于 2022-07-22 10:27:14
回答 1查看 58关注 0票数 1

我想结合两个数据集在Python基于多种条件使用熊猫。

这两个数据集是不同的行数。

第一个包含几乎300k entries,,而第二个包含几乎1000 entries.

更具体地说,第一个dataset: "A"包含以下信息:

代码语言:javascript
复制
Path | Line | Severity | Vulnerability | Name | Text | Title

"A“内容的一个实例是:

代码语言:javascript
复制
src.bla.bla.class.java| 24; medium| Logging found| hr.kravarscan.enchantedfortress_15| description| Enchanted Fortress

而第二个dataset: "B"包含以下信息:

代码语言:javascript
复制
Class | Path | DTWC | DR | DW | IDFP

"B“中内容的一个实例是:

代码语言:javascript
复制
y.x.bla.MainActivity | com.lucao.limpazap_11| 0 | 0 | 0 | 0

我想按以下方式组合这两个数据集:

代码语言:javascript
复制
If A['Name'] is equal to B['Path'] AND B['Class'] is in A['Class']
Than
   Merge the two lines into another data frame "C"

输出示例如下:

假设A包含:

代码语言:javascript
复制
src.bla.bla.class.java| 24| medium| Logging found| hr.kravarscan.enchantedfortress_15| description| Enchanted Fortress|

B包括:

代码语言:javascript
复制
com.bla.class | hr.kravarscan.enchantedfortress_15| 0 | 0 | 0 | 0

产出应如下:

代码语言:javascript
复制
src.bla.bla.class.java| 24| medium| Logging found| hr.kravarscan.enchantedfortress_15| description| Enchanted Fortress| com.bla.class | hr.kravarscan.enchantedfortress_15| 0 | 0 | 0 | 0
EN

回答 1

Stack Overflow用户

发布于 2022-07-23 08:47:40

我不确定这是否是最好和最有效的方法,但我已经测试了它,它起作用了。因此,我的答案是非常直接的,我们将循环两个数据,并应用所需的条件。

假设dataset Adf_a,dataset Bdf_b

首先,我们必须在df_adf_b上的每个列上添加一个后缀,这样两行都可以在后面追加。

代码语言:javascript
复制
df_a.columns= [i+'_A' for i in df_a.columns]
df_b.columns= [i+'_B' for i in df_b.columns]

然后我们可以应用这个for循环

代码语言:javascript
复制
df_c= pd.DataFrame()

# Iterate through df_a
for (idx_A, v_A) in df_a.iterrows():
    
    # Iterate through df_b
    for (idx_B, v_B) in df_b.iterrows():

        # Apply the condition
        if v_A['Name_A']==v_B['Path_B'] and v_B['Class_B'] in v_A['Path_A']:

            # Cast both series to dictionary and then append them to a new dict
            c_dict= {**v_A.to_dict(), **v_B.to_dict()}
            
            # Append the df_c with c_dict
            df_c= df_c.append(c_dict, ignore_index=True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73078849

复制
相关文章

相似问题

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