Преобразование данных в годовом формате в финансовые с пандами - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть структура данных, подобная этой:

______________________________________________________
|Year|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC|
|____|___|___|___|___|___|___|___|___|___|___|___|___|
|2016| 5 | 4 | 5 | 6 | 7 | 9 | 9 | 8 | 5 | 3 | 2 | 1 |
|____|___|___|___|___|___|___|___|___|___|___|___|___|
|2017| 3 | 4 | 3 | 5 | 8 | 8 | 7 | 6 | 4 | 3 | 3 | 2 |

Я хочу создать новую строку для финансового года апрель 2016 г. - апрель 2017 г., которая переместится из 3-го столбца в 11-й столбец строки 1 и объединит ее с 0-м столбцом до 3-го столбца строки 2.

Я пробовал:

df.loc['Apr16-Apr17'] = df.iloc[[[0], [3,4,5,6,7,8,9,10,11]] [[1], [0,1,2,3]]]

Но я не мог заставить это работать. Что мне не хватает?

df.loc['Apr16-Apr17'] = df.iloc[[[0], [3,4,5,6,7,8,9,10,11]] <DOES SOMETHING GO HERE?> [[1], [0,1,2,3]]]

1 Ответ

0 голосов
/ 09 ноября 2018

Вы можете сделать это для всего вашего DataFrame. Все, что вам нужно сделать, это roll ваш массив слева:

v = np.roll(df.values.ravel(), -3).astype(float)
v[-3:] = np.nan

df_annual = pd.DataFrame(
    index=df.index, columns=df.columns, data=v.reshape(-1, 12))
print(df_annual)
      JAN  FEB  MAR  APR  MAY  JUN  JUL  AUG  SEP  OCT  NOV  DEC
Year                                                            
2016  6.0  7.0  9.0  9.0  8.0  5.0  3.0  2.0  1.0  3.0  4.0  3.0
2017  5.0  8.0  8.0  7.0  6.0  4.0  3.0  3.0  2.0  NaN  NaN  NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...