Python 是否删除groupby中重复的行?

Python 是否删除groupby中重复的行?,python,pandas,Python,Pandas,我试图在数据框中创建一个名为volume的新列。DF已经包括其他栏目,如market。我想做的是按价格和公司分组,然后得到它们的数量,并将其添加到名为volume的新列中。以下是我所拥有的: df['volume'] = df.groupby(['price', 'company']).transform('count') 这确实创建了一个新列,但是,它给了我所有的行。我不需要所有的行。例如,在转换之前,我会得到4行,而在转换之后,我仍然得到4行,但有一个新列 market company

我试图在数据框中创建一个名为volume的新列。DF已经包括其他栏目,如market。我想做的是按价格和公司分组,然后得到它们的数量,并将其添加到名为volume的新列中。以下是我所拥有的:

df['volume'] = df.groupby(['price', 'company']).transform('count')
这确实创建了一个新列,但是,它给了我所有的行。我不需要所有的行。例如,在转换之前,我会得到4行,而在转换之后,我仍然得到4行,但有一个新列

market  company   price    volume
LA      EK        206.0     2
LA      SQ        206.0     1
LA      EK        206.0     2
LA      EK        36.0      3
LA      EK        36.0      3
LA      SQ        36.0      1
LA      EK        36.0      3
我想删除重复的行。我是否可以使用groupby执行一个查询,该查询只显示如下所示的行:

market  company   price    volume
LA      EK        206.0     2
LA      SQ        206.0     1
LA      SQ        36.0      1
LA      EK        36.0      3

只需使用列
['market'、'company'、'price']
删除重复的

>>> df.drop_duplicates(['market', 'company', 'price'])
  market company  price  volume
0     LA      EK  206.0       2
1     LA      SQ  206.0       1
3     LA      EK   36.0       3
5     LA      SQ   36.0       1

您的数据包含重复项,可能是因为您只包含了列的一个子集。您的数据中需要价格以外的其他信息(例如,两个不同的交易日可能以相同的价格结束,但您不会将这两个交易日的交易量相加)

假设给定时间戳、市场和公司的价格是唯一的,并且您首先在时间戳列(如果有)上排序(如果每个公司和市场只有一个价格,则不需要):

df = pd.DataFrame({
    'company': ['EK', 'SQ', 'EK', 'EK', 'EK', 'SQ', 'EK'],
    'date': ['2018-08-13'] * 3 + ['2018-08-14'] * 4,
    'market': ['LA'] * 7,
    'price': [206] * 3 + [36] * 4})

>>> (df.groupby(['market', 'date', 'company'])['price']
     .agg({'price': 'last', 'volume': 'count'}[['price', 'volume']]
     .reset_index()

  market        date company  price  volume
0     LA  2018-08-13      EK    206       2
1     LA  2018-08-13      SQ    206       1
2     LA  2018-08-14      EK     36       3
3     LA  2018-08-14      SQ     36       1