2015-07-03 1 views
-1

У меня есть данные, которые составлявшие слишком много строк в dataframe
ех) вход:ПИТОН: сокращайте большие данные в DataFrame

No col1 col2 col3 col4 

1 0  5 6 8 
2 0  5 7 8 
3 0  7 5 2 
4 0  4 4 5 
. .  . . . 
. .  . . . 
. .  . . . 

выход:

New_No col1 col2 col3 col4  
    1  0 5.66 6 6 
    .  . . . . 
    .  . . . . 
    .  . . . . 
    .  . . . . 
    .  . . . . 

Я хочу сокращайте 3 строки в 1 строки использовать средний (средний 3 ряда)
Что я могу сделать для этого?

ответ

0

Вы можете взять mean после использования groupby:

>>> df = pd.DataFrame(np.random.randint(0, 10, (9, 5))) 
>>> df 
    0 1 2 3 4 
0 9 7 9 8 8 
1 5 5 5 5 7 
2 6 5 3 3 0 
3 5 2 9 3 3 
4 6 0 5 9 4 
5 9 8 9 2 3 
6 6 9 8 7 2 
7 8 1 9 7 6 
8 7 9 2 2 8 
>>> df.groupby(np.arange(len(df))//3).mean() 
      0   1   2   3   4 
0 6.666667 5.666667 5.666667 5.333333 5.000000 
1 6.666667 3.333333 7.666667 4.666667 3.333333 
2 7.000000 6.333333 6.333333 5.333333 5.333333 

Это работает, потому что, когда мы разделим круг на 3, мы получаем кластеры 3:

>>> np.arange(len(df))//3 
array([0, 0, 0, 1, 1, 1, 2, 2, 2]) 

и мы можем группу на них номера. Таким образом, даже если мы завершаем группу из 2 (скажем, потому что общее количество строк не делится на 3), оно автоматически дает нам правильное среднее значение.

+0

Большое спасибо –