重塑大熊猫(python)

时间:2018-02-24 17:02:46

标签: python pandas reshape2

我正在尝试使用枢轴和旋转功能重塑此文件,但没有任何成功。

每个用户都有两个tiestamps,一个在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

我想要的是什么:

ID; INDEX; Count1_19,Cou2_19_count3_19,count1_22,count2_22,count3_22

对于每个ID.INDEX

重塑可能吗?任何其他解决方案

谢谢

2 个答案:

答案 0 :(得分:1)

首先,我认为您的测试数据存在错误。如果我们根据您的需要计算您的数据,您将看到大多数值的计数为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

答案 1 :(得分:0)

你能检查一下这是不是你想要的吗?

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()
相关问题