Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.2k views
in Technique[技术] by (71.8m points)

pandas - Find symmetrical entries dataframe, if not delete entry

I have the following data.

ID1 ID2 Value
1    2   5.5
2    1    10
1    3    5

Expected output:

ID1 ID2 Value
1    2   5.5
2    1    10

I only want to hold data, when I have a value for the symmetrical entry. If I only have a entry e.g. with ID1=1 and ID2=3 but no entry for ID1=3 and ID2=1 then I want to delete this datarow. How can I do this with pandas?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

If all values in pairs in columns ID1 and ID2 are unique first create helper DataFrame with np.sort and return all duplicated rows with DataFrame.duplicated:

df1 = pd.DataFrame(np.sort(df[['ID1','ID2']], axis=1), index=df.index)

df = df[df1.duplicated(keep=False)]
print (df)
   ID1  ID2  Value
0    1    2    5.5
1    2    1   10.0

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...