转置字段csv,Python(Numpy或Pandas)

时间:2018-10-29 10:47:48

标签: python pandas csv numpy

我需要做这样的事情:

Image

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”的列,必须将归档的ID重复次数与我们拥有的日期列的次数相同

我无法使用arcpy的“转置字段”工具,只能使用免费代码。

请帮帮我。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用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

让我知道它是否有效。