Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas dataframe:平均一个列中的值,因为另一个列具有重复项_Python_Pandas_Dataframe_Duplicates - Fatal编程技术网

Python Pandas dataframe:平均一个列中的值,因为另一个列具有重复项

Python Pandas dataframe:平均一个列中的值,因为另一个列具有重复项,python,pandas,dataframe,duplicates,Python,Pandas,Dataframe,Duplicates,我有一个类似于下面的数据框: Time B C 10:06 2 5 10:07 5 3 10:07 4 1 10:08 7 3 10:08 9 4 10:08 5 6 如果“时间”相等,我想取cols B和C中的值的平均值。我有下面的代码,但我意识到我没有给出一个一般情况: 1.没有重复的 2.同一分钟内读数超过3次 有没有一种更有效、更通用的方法 rowF = le

我有一个类似于下面的数据框:

   Time    B    C  
   10:06   2    5
   10:07   5    3
   10:07   4    1 
   10:08   7    3
   10:08   9    4
   10:08   5    6
如果“时间”相等,我想取cols B和C中的值的平均值。我有下面的代码,但我意识到我没有给出一个一般情况: 1.没有重复的 2.同一分钟内读数超过3次

有没有一种更有效、更通用的方法

    rowF = len(B)
    while i < rowF -1:

    if (df.loc[i, 'Time'] == df.loc[i+1, 'Time']):
        if(df.loc[i,'Time'] == df.loc[i+2, 'Time']):
            a = df.loc[i:i+2,'B']
            avg = sum(a)/float(len(a))
            average.append(avg)
            print(average)
        else:
            a = df.loc[i:i+1,'B']
            avg = sum(a)/float(len(a))
            average.append(avg)
            print(average)

    df1['B'] = average
    i+=1
您可以将此功能用于:

df = pd.DataFrame({'Time': ['10:06', '10:07', '10:07', '10:08', '10:08', '10:08'],
                   'B': [2, 5, 4, 7, 9, 5],
                   'C': [5, 3, 1, 3, 4, 6]})

df.groupby('Time').mean()
这将返回每列的平均值,按索引值分组:

         B         C
Time
10:06  2.0  5.000000
10:07  4.5  2.000000
10:08  7.0  4.333333

你的预期产出是多少?只要使用
df.groupby('Time',as_index=False).mean()
?@Zero我添加了预期的输出。谢谢你的评论;您是否可以解释groupby正在做什么,我是否可以有效地为大型数据集实现它?请参阅文档:我不知道原因是什么,但它对我不起作用尝试此操作时,您会得到什么样的输出/错误?
         B         C
Time
10:06  2.0  5.000000
10:07  4.5  2.000000
10:08  7.0  4.333333