如何在DataFrame中过滤出行号不同的行?

时间:2019-12-30 18:24:19

标签: python pandas filtering

我有一个DataFrame,其行是给定长度的数字数组。我想有效地摆脱那些与其他行相差-1的行。例如,如果我遇到

 1 -2  2  4 -4

-1  2 -2 -4  4

然后我要删除其中一个。在Python / Pandas中是否有一种不太昂贵的方法?

1 个答案:

答案 0 :(得分:1)

因此,您可以采取一种技巧,

仅当列数奇数

这样,您可以反转具有大于ceil(n_cols/2.0)个负值的任何条目的符号,然后执行drop_duplicates

from math import ceil
df = pd.read_csv('example_csv.csv')
cols = df.columns
df['n_minus'] = (df<0).sum(axis=1)
df.loc[df['n_minus']>ceil(len(cols)/2.0),cols] = df.loc[df['n_minus']>ceil(len(cols)/2.0),cols]*-1.0
new_df = df[cols].drop_duplicates()