有没有一种方法可以根据以前发生的列x中的值来过滤数据帧?

时间:2019-04-17 20:28:34

标签: python loops dataframe

我正在尝试基于过滤数据帧,以便保留以前未在X列中显示的整个行。如果已经发生过,那么我需要将Y列中的值与第一行中Y列中的值进行比较。

示例:

MM     Bid Sz      Bid      

BP1     15       73.20
TWD1    15       73.15
SPAC    250      71.00
BCOM1   500      71.00
BP2     500      71.00
TWD2    500      71.00
BP3     250      71.00
MC1     500      71.00
MC2     275      70.25
TWD3    275      70.10
MC3     150      68.00

2 个答案:

答案 0 :(得分:1)

使用df.drop_duplicates。在您的示例中,如果要删除在上一行中见证的具有Bid值的行,则应调用<your_dataframe>.drop_duplicates(subset="Bid")。在这里,keep关键字参数具有默认值"first",这是您想要的行为,因此无需进行设置。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html

答案 1 :(得分:0)

我可能需要更多信息来解决您的问题,但是希望这可以帮助您前进。

我在这里制作了一个数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame(data={'X': [1,1,2,3,4,5], 'Y':['kept', 'dropped', 2, 3, 4, 5]}); df

看起来像这样...

X   Y
1   kept
1   dropped
2   2
3   3
4   4
5   5

然后,我将非唯一值放在df['X']中,并将kept的{​​{1}}出现在值中:

'first'

现在,我的df = df.drop_duplicates(subset=['X'], keep='first');df看起来像这样:

df

使用X Y 1 kept 2 2 3 3 4 4 5 5 可以确保仅将一行中的唯一值至少保持某种逻辑程度。但是,您可能还需要考虑使用drop_duplicates遍历数据帧以检查唯一值并同时进行比较。这将大大提高效率。

最后,如果这不是您想要的,请让我知道和/或提供更多信息。我很乐意提供帮助!