2 回答
TA贡献1719条经验 获得超6个赞
您可以连接,然后使用删除重复项keep=False:
df = pd.concat([df1, df2])\
.drop_duplicates(subset=['num', 'Ref', 'Alt'], keep=False)
print(df)
num Ref Alt DP NL
1 500 C A 45.0 90.0
2 255 A C 69.0 26.0
1 500 A A 45.0 54.0
2 255 A A 55.0 55.0
TA贡献1891条经验 获得超3个赞
下面的代码段为您提供了所需的输出:
import pandas as pd
df1 = pd.DataFrame([{"num": 300, "Ref": "C", "Alt": "A", "DP": 50.0, "NL": 30.0},
{"num": 500, "Ref": "C", "Alt": "A", "DP": 45.0, "NL": 90.0},
{"num": 255, "Ref": "A", "Alt": "C", "DP": 69.0, "NL": 26.0},
{"num": 450, "Ref": "B", "Alt": "B", "DP": 55.0, "NL": 25.0}])
df2 = pd.DataFrame([{"num": 300, "Ref": "C", "Alt": "A", "DP": 71.0, "NL": 88.0},
{"num": 500, "Ref": "A", "Alt": "A", "DP": 45.0, "NL": 54.0},
{"num": 255, "Ref": "A", "Alt": "A", "DP": 55.0, "NL": 55.0},
{"num": 450, "Ref": "B", "Alt": "B", "DP": 70.0, "NL": 15.0},])
print(df2[~df2.isin(df1)[["num", "Ref", "Alt"]].all(1)])
输出:
Alt DP NL Ref num
1 A 45.0 54.0 A 500
2 A 55.0 55.0 A 255
print(df1[~df1.isin(df2)[["num", "Ref", "Alt"]].all(1)])
输出:
Alt DP NL Ref num
1 A 45.0 90.0 C 500
2 C 69.0 26.0 A 255
如果要在单个数据帧中输出。您可以连接数据框并根据特定的列删除重复的行。
添加回答
举报