панды: вращение означает не работает - PullRequest
0 голосов
/ 13 мая 2018

У меня есть кадр данных pandas следующим образом:

         Dates  Var_1   Var_2
0   2018-01-09  612.0  368.0  
1   2018-01-10  348.0  348.0  
2   2018-01-11  350.0  337.0  
3   2018-01-12  335.0  337.0  
4   2018-01-13  334.0 900.0  
5   2018-01-14  325.0  325.0 
6   2018-01-15  580.0  317.0 
7   2018-01-16  334.0 900.0  
8   2018-01-17  325.0  325.0 

Я попытался вычислить среднее значение для каждых 3 элементов качения для каждого столбца.Например:

mean of 2018-01-09, 2018-01-10, 2018-01-11 >> 2018-01-10
mean of 612.0, 348.0, 350.0 >> 436.66

Затем выведите 3 rows by 2 columns pandas dataframe.

Я пробовал как:

result = df.set_index('Dates').rolling(3).mean().reset_index()

Но безуспешно.Пожалуйста, помогите мне, ребята

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Вы можете groupby делить по полу np.arange на 3 и, если хотите, также означает datetimes, необходимо преобразовать в np.int64 для родных значений времени Unix в nanoseconds и выполнить последнее преобразованиеназад:

print (np.arange(len(df)))
[0 1 2 3 4 5 6 7 8]

print (np.arange(len(df)) // 3)
[0 0 0 1 1 1 2 2 2]

df['Dates'] = pd.to_datetime(df['Dates']).astype(np.int64)
print (df)
                 Dates  Var_1  Var_2
0  1515456000000000000  612.0  368.0
1  1515542400000000000  348.0  348.0
2  1515628800000000000  350.0  337.0
3  1515715200000000000  335.0  337.0
4  1515801600000000000  334.0  900.0
5  1515888000000000000  325.0  325.0
6  1515974400000000000  580.0  317.0
7  1516060800000000000  334.0  900.0
8  1516147200000000000  325.0  325.0

df = df.groupby(np.arange(len(df)) // 3).mean()
df['Dates'] = pd.to_datetime(df['Dates'])
print (df)
       Dates       Var_1       Var_2
0 2018-01-10  436.666667  351.000000
1 2018-01-13  331.333333  520.666667
2 2018-01-16  413.000000  514.000000

Если преобразование пропущено, столбец Dates удаляется без вывода сообщений, поскольку автоматическое исключение столбцов помех .

df = df.groupby(np.arange(len(df)) // 3).mean()
print (df)
        Var_1       Var_2
0  436.666667  351.000000
1  331.333333  520.666667
2  413.000000  514.000000
0 голосов
/ 13 мая 2018
import pandas as pd

data = {'Dates': ['2018-01-09', '2018-01-10', '2018-01-11', '2018-01-12', '2018-01-15', '2018-01-16', '2018-01-17'],
        'var1': [612, 348, 350, 335, 334, 325, 580]}
df = pd.DataFrame(data)

result = df['var1'].rolling(window=3).mean()

Извините за мой первый ответ - roll_mean () устарел, поэтому я хотел полностью заменить его. Это работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...