我具有以下国家之间流量的数据框:
import pandas as pd
data = [['US','FR', 10,'a'], ['FR','US', 15,'b'], ['IT','BA', 14,'c']]
df = pd.DataFrame(data, columns = ['Country_1', 'Country_2','var_1','var_2'])
print(df)
Country_1 Country_2 var_1 var_2
0 US FR 10 12
1 FR US 12 10
2 IT BA 14 5
在所有国家对两次都被看到的意义上是对称的。我的目标是根据 Country_1 和 Country_2 两列消除对称重复项。在此示例中,预期的数据帧将是:
Country_1 Country_2 var_1 var_2
0 US FR 10 12
1 IT BA 14 5
一个相关的question处理一维情况,但是当存在大量变量(var_11,var_12,var_21,var_22,var_31,var_32; ...)时,该解决方案不起作用。
以前有人遇到过这个问题吗?
答案 0 :(得分:0)
使用:
#first remove all duplicates
df = df.drop_duplicates(['Country_1','Country_2'])
#sorted values in country columns and remove duplicates
m = pd.DataFrame(np.sort(df[['Country_1','Country_2']], axis=1), index=df.index).duplicated()
df = df[~m]
print (df)
Country_1 Country_2 var_1 var_2
0 US FR 10 a
2 IT BA 14 c