我的问题与this one非常相似,但使用Python。此外,我还希望可以选择是否保留索引,还可以删除其条目未出现在参考数据帧中的所有行。
答案 0 :(得分:0)
您可以将要为其排序其他DataFrame
的列用作索引:
import pandas as pd
d1 = ['23.OH3', '28.OG2', '28.OI1', '40.OE1', '50.OF1']
d2 = ['28.OI1', '23.OH3', '40.OE1', '28.OG2']
abc_d = {'batch_id': [1, 1, 2, 2, 3], 'file_number': d1}
xyz_d = {'file_name': d2}
abc = pd.DataFrame(data = abc_d)
xyz = pd.DataFrame(data = xyz_d)
idx = pd.Index(xyz.file_name)
abc.set_index('file_number').loc[idx].reset_index()
只要len(abc) >= len(xyz)
就会起作用,xyz
中丢失的行将被删除。
编辑:您可以删除丢失的行,而不考虑len(abc)
和len(xyz)
的方式:
d1 = ['23.OH3', '28.OG2', '28.OI1', '40.OE1']
d2 = ['28.OI1', '23.OH3', '40.OE1', '28.OG2', '50.OF1']
abc_d = {'batch_id': [1, 1, 2, 2], 'file_number': d1}
xyz_d = {'file_number': d2}
abc = pd.DataFrame(data = abc_d)
xyz = pd.DataFrame(data = xyz_d)
idx = pd.Index(xyz.file_number)
not_missing = xyz.file_number.isin(abc.file_number)
idx = idx[not_missing]
abc.set_index('file_number').loc[idx].reset_index()