代码之家  ›  专栏  ›  技术社区  ›  mbooma

熊猫造型(python)

  •  -1
  • mbooma  · 技术社区  · 6 年前

    我正在尝试使用pivot和pivoed fonction重塑此文件,但没有任何成功。

    每个用户有两个tiestamp,一个在19h,另一个在22h,每个用户有3个变量,每个变量有8个索引

    文件示例:

    DATA_STAMP;ID;VARIABLES;INDEX;VALUE 2018-02-19 19:15:25;6550692;count1;3;230993 2018-02-19 19:15:25;6550692;count1;2;0 2018-02-19 19:15:25;6550692;count1;1;34513980 2018-02-19 19:15:25;6550692;count1;0;1500517 2018-02-19 19:15:25;6550692;count1;7;0 2018-02-19 19:15:25;6550692;count1;6;14958246 2018-02-19 19:15:25;6550692;count1;5;0 2018-02-19 19:15:25;6550692;count1;4;156 2018-02-19 19:15:25;6549986;count1;3;5047 2018-02-19 19:15:25;6549986;count1;2;0 2018-02-19 19:15:25;6549986;count1;1;1016836 2018-02-19 19:15:25;6549986;count1;0;265705 2018-02-19 19:15:25;6549986;count1;7;0 2018-02-19 19:15:25;6549986;count1;6;18661246 2018-02-19 19:15:25;6549986;count1;5;0 2018-02-19 19:15:25;6549986;count1;4;0 2018-02-19 19:15:25;6549456;count1;7;0 2018-02-19 19:15:25;6549456;count1;5;164663 2018-02-19 19:15:25;6549456;count1;6;4640344 2018-02-19 19:15:25;6550692;count2;3;230993 2018-02-19 19:15:25;6550692;count2;2;0 2018-02-19 19:15:25;6550692;count2;1;34513980 2018-02-19 19:15:25;6550692;count2;0;1500517 2018-02-19 19:15:25;6550692;count2;7;0 2018-02-19 19:15:25;6550692;count2;6;14958246 2018-02-19 19:15:25;6550692;count2;5;0 2018-02-19 19:15:25;6550692;count2;4;156 2018-02-19 19:15:25;6549986;count2;3;5047 2018-02-19 19:15:25;6549986;count2;2;0 2018-02-19 19:15:25;6549986;count2;1;1016836 2018-02-19 19:15:25;6549986;count2;0;265705 2018-02-19 19:15:25;6549986;count2;7;0 2018-02-19 19:15:25;6549986;count2;6;18661246 2018-02-19 19:15:25;6549986;count2;5;0 2018-02-19 19:15:25;6549986;count2;4;0 2018-02-19 19:15:25;6549456;count2;7;0 2018-02-19 19:15:25;6549456;count2;5;164663 2018-02-19 19:15:25;6549456;count2;6;4640344 2018-02-19 19:15:25;6550692;count2;3;230993 2018-02-19 19:15:25;6550692;count3;2;0 2018-02-19 19:15:25;6550692;count3;1;34513980 2018-02-19 19:15:25;6550692;count3;0;1500517 2018-02-19 19:15:25;6550692;count3;7;0 2018-02-19 19:15:25;6550692;count3;6;14958246 2018-02-19 19:15:25;6550692;count3;5;0 2018-02-19 19:15:25;6550692;count3;4;156 2018-02-19 19:15:25;6549986;count3;3;5047 2018-02-19 19:15:25;6549986;count3;2;0 2018-02-19 19:15:25;6549986;count3;1;1016836 2018-02-19 19:15:25;6549986;count3;0;265705 2018-02-19 19:15:25;6549986;count3;7;0 2018-02-19 19:15:25;6549986;count3;6;18661246 2018-02-19 19:15:25;6549986;count3;5;0 2018-02-19 19:15:25;6549986;count3;4;0 2018-02-19 19:15:25;6549456;count3;7;0 2018-02-19 19:15:25;6549456;count3;5;164663 2018-02-19 19:15:25;6549456;count3;6;4640344 2018-02-19 22:15:25;6550692;count1;3;230993 2018-02-19 22:15:25;6550692;count1;2;0 2018-02-19 22:15:25;6550692;count1;1;34513980 2018-02-19 22:15:25;6550692;count1;0;1500517 2018-02-19 22:15:25;6550692;count1;7;0 2018-02-19 22:15:25;6550692;count1;6;14958246 2018-02-19 22:15:25;6550692;count1;5;0 2018-02-19 22:15:25;6550692;count1;4;156 2018-02-19 22:15:25;6549986;count1;3;5047 2018-02-19 22:15:25;6549986;count1;2;0 2018-02-19 22:15:25;6549986;count1;1;1016836 2018-02-19 22:15:25;6549986;count1;0;265705 2018-02-19 22:15:25;6549986;count1;7;0 2018-02-19 22:15:25;6549986;count1;6;18661246 2018-02-19 22:15:25;6549986;count1;5;0 2018-02-19 22:15:25;6549986;count1;4;0 2018-02-19 22:15:25;6549456;count1;7;0 2018-02-19 22:15:25;6549456;count1;5;164663 2018-02-19 22:15:25;6549456;count1;6;4640344 2018-02-19 22:15:25;6550692;count2;3;230993 2018-02-19 22:15:25;6550692;count2;2;0 2018-02-19 22:15:25;6550692;count2;1;34513980 2018-02-19 22:15:25;6550692;count2;0;1500517 2018-02-19 22:15:25;6550692;count2;7;0 2018-02-19 22:15:25;6550692;count2;6;14958246 2018-02-19 22:15:25;6550692;count2;5;0 2018-02-19 22:15:25;6550692;count2;4;156 2018-02-19 22:15:25;6549986;count2;3;5047 2018-02-19 22:15:25;6549986;count2;2;0 2018-02-19 22:15:25;6549986;count2;1;1016836 2018-02-19 22:15:25;6549986;count2;0;265705 2018-02-19 22:15:25;6549986;count2;7;0 2018-02-19 22:15:25;6549986;count2;6;18661246 2018-02-19 22:15:25;6549986;count2;5;0 2018-02-19 22:15:25;6549986;count2;4;0 2018-02-19 22:15:25;6549456;count2;7;0 2018-02-19 22:15:25;6549456;count2;5;164663 2018-02-19 22:15:25;6549456;count2;6;4640344 2018-02-19 22:15:25;6550692;count2;3;230993 2018-02-19 22:15:25;6550692;count3;2;0 2018-02-19 22:15:25;6550692;count3;1;34513980 2018-02-19 22:15:25;6550692;count3;0;1500517 2018-02-19 22:15:25;6550692;count3;7;0 2018-02-19 22:15:25;6550692;count3;6;14958246 2018-02-19 22:15:25;6550692;count3;5;0 2018-02-19 22:15:25;6550692;count3;4;156 2018-02-19 22:15:25;6549986;count3;3;5047 2018-02-19 22:15:25;6549986;count3;2;0 2018-02-19 22:15:25;6549986;count3;1;1016836 2018-02-19 22:15:25;6549986;count3;0;265705 2018-02-19 22:15:25;6549986;count3;7;0 2018-02-19 22:15:25;6549986;count3;6;18661246 2018-02-19 22:15:25;6549986;count3;5;0 2018-02-19 22:15:25;6549986;count3;4;0 2018-02-19 22:15:25;6549456;count3;7;0 2018-02-19 22:15:25;6549456;count3;5;164663 2018-02-19 22:15:25;6549456;count3;6;4640344

    我想要的:

    身份证件索引;Count1\u 19、Cou2\u 19\u count3\u 19、Count1\u 22、count2\u 22、count3\u 22

    对于每个ID.INDEX

    是否可能使用重塑?任何其他解决方案

    非常感谢。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Scott Boston    6 年前

    首先,我认为您的测试数据有错误。如果我们按照您希望的方式对数据进行计数,您将看到大多数值的计数都是1,但接下来有两个值的计数都是2,接下来的两个值都没有。

    VARIABLES     count1      count2      count3     
    hour              19   22     19   22     19   22
    ID      INDEX                                    
    6549456 5        1.0  1.0    1.0  1.0    1.0  1.0
            6        1.0  1.0    1.0  1.0    1.0  1.0
            7        1.0  1.0    1.0  1.0    1.0  1.0
    6549986 0        1.0  1.0    1.0  1.0    1.0  1.0
            1        1.0  1.0    1.0  1.0    1.0  1.0
            2        1.0  1.0    1.0  1.0    1.0  1.0
            3        1.0  1.0    1.0  1.0    1.0  1.0
            4        1.0  1.0    1.0  1.0    1.0  1.0
            5        1.0  1.0    1.0  1.0    1.0  1.0
            6        1.0  1.0    1.0  1.0    1.0  1.0
            7        1.0  1.0    1.0  1.0    1.0  1.0
    6550692 0        1.0  1.0    1.0  1.0    1.0  1.0
            1        1.0  1.0    1.0  1.0    1.0  1.0
            2        1.0  1.0    1.0  1.0    1.0  1.0
            3        1.0  1.0    2.0  2.0    NaN  NaN
            4        1.0  1.0    1.0  1.0    1.0  1.0
            5        1.0  1.0    1.0  1.0    1.0  1.0
            6        1.0  1.0    1.0  1.0    1.0  1.0
            7        1.0  1.0    1.0  1.0    1.0  1.0
    

    但是,我们仍然可以对具有两个值的位置使用某种聚合来重塑数据。

    df_out = df.groupby(['ID','INDEX','VARIABLES','hour'])['VALUE'].mean().unstack([-2,-1])
    ​
    df_out.columns = df_out.columns.map('{0[0]}_{0[1]}'.format)
    
    print(df_out.reset_index())
    

    输出:

             ID  INDEX   count1_19   count1_22   count2_19   count2_22   count3_19   count3_22
    0   6549456      5    164663.0    164663.0    164663.0    164663.0    164663.0    164663.0
    1   6549456      6   4640344.0   4640344.0   4640344.0   4640344.0   4640344.0   4640344.0
    2   6549456      7         0.0         0.0         0.0         0.0         0.0         0.0
    3   6549986      0    265705.0    265705.0    265705.0    265705.0    265705.0    265705.0
    4   6549986      1   1016836.0   1016836.0   1016836.0   1016836.0   1016836.0   1016836.0
    5   6549986      2         0.0         0.0         0.0         0.0         0.0         0.0
    6   6549986      3      5047.0      5047.0      5047.0      5047.0      5047.0      5047.0
    7   6549986      4         0.0         0.0         0.0         0.0         0.0         0.0
    8   6549986      5         0.0         0.0         0.0         0.0         0.0         0.0
    9   6549986      6  18661246.0  18661246.0  18661246.0  18661246.0  18661246.0  18661246.0
    10  6549986      7         0.0         0.0         0.0         0.0         0.0         0.0
    11  6550692      0   1500517.0   1500517.0   1500517.0   1500517.0   1500517.0   1500517.0
    12  6550692      1  34513980.0  34513980.0  34513980.0  34513980.0  34513980.0  34513980.0
    13  6550692      2         0.0         0.0         0.0         0.0         0.0         0.0
    14  6550692      3    230993.0    230993.0    230993.0    230993.0         NaN         NaN
    15  6550692      4       156.0       156.0       156.0       156.0       156.0       156.0
    16  6550692      5         0.0         0.0         0.0         0.0         0.0         0.0
    17  6550692      6  14958246.0  14958246.0  14958246.0  14958246.0  14958246.0  14958246.0
    18  6550692      7         0.0         0.0         0.0         0.0         0.0         0.0
    
        2
  •  0
  •   joaoavf    6 年前

    你能看看这是不是你想要的吗?

    import pandas as pd
    
    df = pd.read_csv('file.csv', sep=';', parse_dates=[0], index_col=0)
    df.groupby(['ID', 'INDEX'])['VARIABLES'].value_counts().unstack()
    

    重读你的帖子,我想你想要这个:

    df.groupby(['ID', 'INDEX', df.index.hour])['VARIABLES'].value_counts().unstack().unstack()