循环遍历组Pandas Dataframe并获取总和/计数

时间:2016-09-22 12:15:14

标签: python pandas dataframe count sum

我正在使用Pandas来构建和处理数据。 这是我的DataFrame:

DataFrame

这是使我能够获取此DataFrame的代码:

(data[['time_bucket', 'beginning_time', 'bitrate', 2, 3]].groupby(['time_bucket', 'beginning_time', 2, 3])).aggregate(np.mean)

现在我希望获得我的比特率的总和(理想情况下,总和和数量)。分组在同一time_bucket。例如,对于第一次time_bucket((2016-07-08 02:00:00,2016-07-08 02:05:00),它必须是93750000作为总和,25作为计数,对于所有情况&#39 ;比特率'

我这样做了:

data[['time_bucket', 'bitrate']].groupby(['time_bucket']).agg(['sum', 'count'])

这就是结果:

enter image description here

但我真的想把所有数据放在一个DataFrame中。

我可以做一个简单的循环吗?time_bucket'并应用计算所有比特率之和的函数? 有任何想法吗 ?谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您需要merge,但需要 static void Main(string[] args) { Initialise(); if (!RunSilently) FireUpGui(); else RunConsoleApp(); // not so relevant to the answer } private static void FireUpGui() { Console.SetWindowSize(80, 5); Thread t = new Thread(Start_Wpf); t.SetApartmentState(ApartmentState.STA); t.Start(); } static App WpfApp; static void Start_Wpf() { WpfApp = new App(); // my WPF App WpfApp.Run(); } 两个indexes的相同级别,因此请使用reset_index。最后通过set_index获得原始DataFrames

Multiindex
data = pd.DataFrame({'A':[1,1,1,1,1,1],
                     'B':[4,4,4,5,5,5],
                     'C':[3,3,3,1,1,1],
                     'D':[1,3,1,3,1,3],
                     'E':[5,3,6,5,7,1]})

print (data)
   A  B  C  D  E
0  1  4  3  1  5
1  1  4  3  3  3
2  1  4  3  1  6
3  1  5  1  3  5
4  1  5  1  1  7
5  1  5  1  3  1

我尝试了另一种解决方案来获取df1 = data[['A', 'B', 'C', 'D','E']].groupby(['A', 'B', 'C', 'D']).aggregate(np.mean) print (df1) E A B C D 1 4 3 1 5.5 3 3.0 5 1 1 7.0 3 3.0 df2 = data[['A', 'C']].groupby(['A'])['C'].agg(['sum', 'count']) print (df2) sum count A 1 12 6 print (pd.merge(df1.reset_index(['B','C','D']), df2, left_index=True, right_index=True) .set_index(['B','C','D'], append=True)) E sum count A B C D 1 4 3 1 5.5 12 6 3 3.0 12 6 5 1 1 7.0 12 6 3 3.0 12 6 的输出,但这是聚合的,因此无法获得正确的数据。如果总和级别为df1,则会C而不是8