【发布时间】:2019-02-16 00:51:26
【问题描述】:
我有一个 pandas 数据框,它包含一些重复的行,所以我想删除它们,但有一个条件:
wave num stlines fwhm EWs MeasredWave rv
0 4050.32 3 0.28269 0.07365 22.16080 4050.311360 0.639507
1 4208.98 5 0.48122 0.08765 44.90035 4208.972962 0.501295
2 4208.98 6 0.49994 0.08220 43.74591 4208.974061 0.423016
3 4512.99 2 0.19428 0.09145 18.91216 4512.981301 0.577864
4 4512.99 2 0.21029 0.08860 19.83386 4512.981389 0.572018
5 4520.22 7 0.65300 0.11791 81.95775 4520.214169 0.386727
6 4520.22 4 0.66772 0.11591 82.38548 4520.212833 0.475334
7 4523.08 6 0.13789 0.11303 16.59034 4523.060226 1.310633
8 4523.40 1 0.41672 0.09892 43.87775 4523.390305 0.642545
9 5797.87 3 0.27062 0.15473 44.57125 5797.850820 0.991747
10 5797.87 4 0.28240 0.14991 45.06534 5797.848945 1.088698
dir1 = os.listdir('/home/Desktop/computed_2d/')
for filename in dir1:
if filename.endswith('.ares'):
df1 = pd.read_table(path1+filename, skiprows=0, usecols=(0,1,2,3,4,8,10),names=['wave','num','stlines','fwhm','EWs','MeasredWave','rv'],delimiter=r'\s+')
#dup_rows gives the duplicate rows on the basis of column 'wave'
dup_rows = df1[df1.duplicated(['wave'], keep=False)]
computed_rv = 0.50641
现在我想做的是,我想删除 df1.rv 的值几乎等于 computed_rv 的值的重复行。
例如:从第 1 行和第 2 行开始,我想保留第 1 行,因为 df1.rv 的值几乎等于 compted_rv。
这些值可能低于或高于computed_rv,例如(0.34 和 0.30)或(0.99 和 1.8),然后我想保留 df1.rv 的值接近 'computed_rv' 的行,就像这里我会想要保留 0.34 和 0.99 的那些
我该怎么做?
【问题讨论】:
标签: python-2.7 pandas dataframe duplicates