Транспонировать поля CSV, Python (Numpy или Pandas) - PullRequest
0 голосов
/ 29 октября 2018

Мне нужно сделать что-то вроде этого:

Изображение

ID  20170101    20170106    20170111
A   0.31        0.1           0.2
B   0.3         0.2           0.1
C   0.11        0.12          0.13
D   0.3         0.3           0.4

ID  DATES   NDVI_mean
A   20170101    0.31
A   20170106    0.1
A   20170111    0.2
B   20170101    0.3
B   20170106    0.2
B   20170111    0.1
C   20170101    0.11
C   20170106    0.12
C   20170111    0.13
D   20170101    0.3
D   20170106    0.3
D   20170111    0.4

Описание: у меня есть один столбец с "id" и много столбцов с датами, каждый столбец содержит значения od ndvi. Мне нужно переставить каждую дату в один столбец с именем «Даты», а значения этих дат в другом столбце с именем «NDVI_mean». Полевой идентификатор должен повторяться столько раз, сколько столбцов дат у нас есть

Я не могу использовать инструмент "транспонировать поля" arcpy, только свободный код.

Пожалуйста, помогите мне.

Спасибо

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете использовать функцию melt:

In [1611]: df
Out[1617]: 
  ID  20170101  20170106  20170111
0  A      0.31      0.10      0.20
1  B      0.30      0.20      0.10
2  C      0.11      0.12      0.13
3  D      0.30      0.30      0.40

In [1613]: pd.melt(df, id_vars='ID', var_name='Date', value_name="NDVI_mean").sort_values('ID')
    Out[1614]: 
   ID      Date  NDVI_mean
0   A  20170101       0.31
4   A  20170106       0.10
8   A  20170111       0.20
1   B  20170101       0.30
5   B  20170106       0.20
9   B  20170111       0.10
2   C  20170101       0.11
6   C  20170106       0.12
10  C  20170111       0.13
3   D  20170101       0.30
7   D  20170106       0.30
11  D  20170111       0.40

Дайте мне знать, если это работает.

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