【问题标题】:How to filter out rows in a DataFrame that differ by a sign?如何过滤掉 DataFrame 中不同符号的行?
【发布时间】:2019-12-31 16:13:27
【问题描述】:

我有一个 DataFrame,它的行是给定长度的数字数组。我想有效地摆脱那些与其他行的符号为 -1 不同的行。比如我遇到

 1 -2  2  4 -4

-1  2 -2 -4  4

然后我想放弃其中之一。在 Python/Pandas 中是否有一种不太昂贵的方式来做到这一点?

可以在here 找到此类 DataFrame 的示例。

【问题讨论】:

  • 你能提供一个示例数据库吗?见stackoverflow.com/questions/20109391/…
  • @TomekKania 你能再提供几行吗?
  • @YOLO - 链接中的 csv 中有更多行。
  • @TomekKania - 你能添加预期的输出吗?

标签: python pandas filtering


【解决方案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()

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多