我想结合两个数据集在Python基于多种条件使用熊猫。
这两个数据集是不同的行数。
第一个包含几乎300k entries,,而第二个包含几乎1000 entries.
更具体地说,第一个dataset: "A"包含以下信息:
Path | Line | Severity | Vulnerability | Name | Text | Title"A“内容的一个实例是:
src.bla.bla.class.java| 24; medium| Logging found| hr.kravarscan.enchantedfortress_15| description| Enchanted Fortress而第二个dataset: "B"包含以下信息:
Class | Path | DTWC | DR | DW | IDFP"B“中内容的一个实例是:
y.x.bla.MainActivity | com.lucao.limpazap_11| 0 | 0 | 0 | 0我想按以下方式组合这两个数据集:
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包含:
src.bla.bla.class.java| 24| medium| Logging found| hr.kravarscan.enchantedfortress_15| description| Enchanted Fortress|B包括:
com.bla.class | hr.kravarscan.enchantedfortress_15| 0 | 0 | 0 | 0产出应如下:
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发布于 2022-07-23 08:47:40
我不确定这是否是最好和最有效的方法,但我已经测试了它,它起作用了。因此,我的答案是非常直接的,我们将循环两个数据,并应用所需的条件。
假设dataset A为df_a,dataset B为df_b。
首先,我们必须在df_a和df_b上的每个列上添加一个后缀,这样两行都可以在后面追加。
df_a.columns= [i+'_A' for i in df_a.columns]
df_b.columns= [i+'_B' for i in df_b.columns]然后我们可以应用这个for循环
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)https://stackoverflow.com/questions/73078849
复制相似问题