Python 在df中合并行

Python 在df中合并行,python,pandas,dataframe,data-science,Python,Pandas,Dataframe,Data Science,熊猫队新成员-我有一个df,列为“小时”、“天”、“周”、“月”和“数量” 有许多条目具有相同的功能(上面的时间列)。我想将所有行合并为一行(具有相同的小时、天、周、月),并简单地求和“数量”,以便每一行都有一组独特的时间特征 下面是我的代码,其方法是沿着原始df迭代,如果新df相对于最后一行是唯一的,则向新df追加一行,否则(如果新df中的行等于旧df中的当前行),然后简单地将旧df行的“数量”添加到新df行的“数量”中 注意:在这个集合中,所有相同的时间行都会一个接一个地出现,这就是我采用这

熊猫队新成员-我有一个df,列为“小时”、“天”、“周”、“月”和“数量” 有许多条目具有相同的功能(上面的时间列)。我想将所有行合并为一行(具有相同的小时、天、周、月),并简单地求和“数量”,以便每一行都有一组独特的时间特征

下面是我的代码,其方法是沿着原始df迭代,如果新df相对于最后一行是唯一的,则向新df追加一行,否则(如果新df中的行等于旧df中的当前行),然后简单地将旧df行的“数量”添加到新df行的“数量”中

注意:在这个集合中,所有相同的时间行都会一个接一个地出现,这就是我采用这种方法的原因

    # Group by total slices per hour
    # init merged dataframe
   sicdf = pd.DataFrame(columns = ['Hour', 'Qty', 'Day', 'Week', 'Month'])
   temp = df_sic1.iloc[0]
   sicdf.loc[len(sicdf.index)] = [temp['Hour'], temp['Qty'], temp['Day'], temp['Week'], 
      temp['Month']]
   j = 0
   for i, row in islice(df_sic1.iterrows(), 1, None, 1):
       if (row['Hour'] == temp['Hour'] and row['Day'] == temp['Day'] and row['Week'] == temp['Week'] 
           and row['Month'] == temp['Month']):
           sicdf.at[j, 'Qty'] = temp['Qty'] + row['Qty']
       else:
           temp = df_sic1.iloc[i]
           sicdf.loc[len(sicdf.index)] = [temp['Hour'], temp['Qty'], temp['Day'], temp['Week'], 
               temp['Month']]
           j = j + 1
问题是它有时似乎有效,有时它只会连接一些行并继续(即,如果有5行相同,我将得到两行而不是新df中的一行),等等。
总的来说似乎不起作用。我相信一定有更简单的方法——只是没有看到任何有帮助的帖子。谢谢

只是需要澄清一下,你想做一个透视表吗?如果有的话,有一个函数。您应该尝试使用GroupBy方法-group by the date列,并使用sum()方法聚合Qty列。在这里或那里读一读。我不太了解您的数据,但您也可以考虑将时间相关的列转换为具有适当的DATETIME格式的单个列。这将使日期相关的转换和聚合更容易。感谢您的快速响应@nelyanne就是我需要的人再次感谢