iteritems () Механизм вывода DateFrame и выход append () в новый DataFrame - PullRequest
0 голосов
/ 13 декабря 2018

Хорошо, достаточно, достаточно.Мне нужна помощь с процедурой iteritems () и append () ...

Здесь у нас есть данные о ценах временных рядов для бочек пива и виски ...

    Beer    Whiskey
Date        
1978-12-29  22.60   86.50
1979-01-02  22.68   86.52
1979-01-03  21.86   87.41
1979-01-04  22.32   87.54
1979-01-05  22.55   87.49
1979-01-08  22.31   87.21
1979-01-09  22.40   87.61
1979-01-10  22.07   87.64
1979-01-11  22.07   88.12
1979-01-12  21.76   88.04

ЧтоЯ пытаюсь сделать, это создать 5-дневный возврат значений из этих данных.Я использую функцию iteritems () и получаю правильные числа.Первая часть, которую я не понимаю, - почему эта функция повторяет вывод столько раз, сколько столбцов в DataFrame (минус индекс).Это код и вывод ...

for value in test.iteritems():
    print(((test - test.shift(5))*100)/test.shift(5))

ВЫХОД

               Beer        Whiskey
Date                          
1978-12-29       NaN       NaN
1979-01-02       NaN       NaN
1979-01-03       NaN       NaN
1979-01-04       NaN       NaN
1979-01-05       NaN       NaN
1979-01-08 -1.283186  0.820809
1979-01-09 -1.234568  1.259824
1979-01-10  0.960659  0.263128
1979-01-11 -1.120072  0.662554
1979-01-12 -3.503326  0.628643
                Beer        Whiskey
Date                          
1978-12-29       NaN       NaN
1979-01-02       NaN       NaN
1979-01-03       NaN       NaN
1979-01-04       NaN       NaN
1979-01-05       NaN       NaN
1979-01-08 -1.283186  0.820809
1979-01-09 -1.234568  1.259824
1979-01-10  0.960659  0.263128
1979-01-11 -1.120072  0.662554
1979-01-12 -3.503326  0.628643

Есть идеи, почему этот точный вывод повторяется?

ДАЛЕЕ, я создаю новый DataFrameи я прошу (очень приятно!) добавить этот вывод в информационный кадр.Вот код ...

for value in test.iteritems():
    df.append(((test - test.shift(5))*100)/test.shift(5))

Это ошибка, которую я получаю ...


TypeError                                 Traceback (most recent call last)
<ipython-input-133-006bdc416056> in <module>()
      1 for value in test.iteritems():
----> 2     df.append(((test - test.shift(5))*100)/test.shift(5))

TypeError: append() missing 1 required positional argument: 'other'

Мои исследования говорят, что эта «другая» ошибка типа возникает, когда естьссылка отсутствует в коде.Я пробовал разные комбинации «ключ, значение» безрезультатно.Кроме того, у функции печати, похоже, нет проблем.Пожалуйста, дайте мне знать, если у вас есть идеи.Заранее спасибо

1 Ответ

0 голосов
/ 13 декабря 2018

pandas.iteritems перебирает пары вида name, column (точнее, series), вы можете проверить это, посмотрев на этот пример

for value in test.iteritems():
    print(value[0])

Thisвыходы

Beer
Whiskey

Вот почему вы видите несколько выходов одного кадра.Простое решение вашей проблемы -

returns = 100 * test.diff(5) / test.shift(5)
print(returns)
                Beer   Whiskey
Date                          
1978-12-29       NaN       NaN
1979-01-02       NaN       NaN
1979-01-03       NaN       NaN
1979-01-04       NaN       NaN
1979-01-05       NaN       NaN
1979-01-08 -1.283186  0.820809
1979-01-09 -1.234568  1.259824
1979-01-10  0.960659  0.263128
1979-01-11 -1.120072  0.662554
1979-01-12 -3.503326  0.628643
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...