具有多列的时间序列,每列都有重复的条目。如何处理大熊猫

时间:2018-10-27 20:43:12

标签: python pandas dataframe duplicates time-series

在“日期”和“ UID”列中具有以下具有重复值的数据框:

{{ response.data}}

如果在同一日期出现重复的UID,则要创建如下所示的内容:

Date           UID       Score
2018-08-31       A          5
2018-08-31       B          3
2018-08-31       C          4
2018-05-31       A          4
2018-05-31       C          2
2018-05-31       A          4
2018-05-31       B          1
2018-05-31       A          3
2018-01-31       C          5
2018-01-31       A          3
2018-01-31       A          4
2018-01-31       C          2
2018-01-31       B          5

我要完成的工作是将原始数据帧分成多个时间序列,可以将其绘制在一起并一起使用。在这种情况下,如何重塑此数据框,以便可以根据UID分数使用3个不同的时间序列进行游戏?

我似乎停留在以下几点...

2018-08-31       A          5
2018-05-31       A          3.67
2018-01-31       A          3.5

2018-08-31       B          3
2018-05-31       B          1
2018-01-31       B          5

2018-08-31       C          4
2018-05-31       C          2
2018-01-31       C          3.5

...而且我无法确定如何正确地重塑形状。

感谢任何反馈。

1 个答案:

答案 0 :(得分:1)

我认为您唯一的问题是您的分组依据。试试:

function addMDA_toA(){

    topleftmapbox.loadImage('images/MDA.png', function(error, image) {
        if (error) throw error;
        topleftmapbox.addImage('meso-image', image);

    });


     var url = 'json/MDA.json';



    window.setInterval(function() {
        topleftmapbox.getSource('mesocyclone').setData(url);
    }, 2000);

    topleftmapbox.addSource('mesocyclone', { type: 'geojson', data: url });
    topleftmapbox.addLayer({
        "id": "mesocyclone",
        "type": "symbol",
        "source": "mesocyclone",
        "layout": {
            "icon-image": "meso-image"
        }
    });

}

这将产生:

#Recreating your frame
df = pd.DataFrame( [['2018-08-31',     'A',         '5'],['2018-08-31','B',3],
['2018-08-31','C',4],
['2018-05-31','A',4],
['2018-05-31','C',2],
['2018-05-31','A',4],
['2018-05-31','B',1],
['2018-05-31','A',3],
['2018-01-31','C',5],
['2018-01-31','A',3],
['2018-01-31','A',4],
['2018-01-31','C',2],
['2018-01-31','B',5]] , columns =  ['Date','UID','Score'])
df['Score'] = pd.to_numeric(df['Score'])

#The solution
df.groupby(['UID', 'Date']).mean()

可以按照以下方式绘制:

                Score
UID Date    
A   2018-01-31  3.500000
    2018-05-31  3.666667
    2018-08-31  5.000000
B   2018-01-31  5.000000
    2018-05-31  1.000000
    2018-08-31  3.000000
C   2018-01-31  3.500000
    2018-05-31  2.000000
    2018-08-31  4.000000