透视/重塑数据框以将日期作为列

时间:2016-11-16 22:36:39

标签: python-2.7 pandas dataframe pivot time-series

这是我的数据框:

<div style="display: none">
    <asp:TextBox ID="TextBox1" runat="server" ValidationGroup="myGroup"></asp:TextBox>
</div>

<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="TextBox1" ValidateEmptyText="true" ErrorMessage="Value is required" ValidationGroup="myGroup" ClientValidationFunction="myCustomValidation"></asp:CustomValidator>

<script type="text/javascript">
    function myCustomValidation(oSrc, args) {
        if (document.getElementById(oSrc.controltovalidate).parentElement.style.display == "block" && args.Value == "") {
            args.IsValid = false;
        } else {
            args.IsValid = true;
        }
    }
</script>

我想将这个数据框组成每个 ID AMT DATE 0 1496846 54.76 2015-02-11 1 1496846 195.00 2015-01-09 2 1571558 11350.00 2015-04-30 3 1498812 135.00 2014-07-11 4 1498812 157.00 2014-08-04 5 1498812 110.00 2014-09-23 6 1498812 1428.00 2015-01-28 7 1558450 4355.00 2015-01-26 8 1858606 321.52 2015-03-27 9 1849431 1046.81 2015-03-19 的时间序列数据。也就是说,每个列名称都是一个日期(已排序),它由ID索引,值是与每个日期对应的ID值。我可以做到像

这样的事情

AMT

但是从这里开始我被困住了。

我也试过

df.set_index("DATE").T

但这给了我一个错误,就是有重复的条目(df.pivot(index='ID', columns='DATE', values='AMT') s)。

我将其设想为转置ID,然后按唯一DATE进行分组并在下方融合ID

1 个答案:

答案 0 :(得分:1)

您希望使用pivot_table,其中有aggfunc参数处理重复索引。

df.pivot_table('AMT', 'DATE', 'ID', aggfunc='sum')

enter image description here

您需要选择如何处理重复项。我把'sum'放在那里。默认为'mean'