使用pivot_table时,将分类数据与数字数据相结合

时间:2017-01-28 21:36:37

标签: python pandas dataframe pivot-table

我必须关注数据(300万行):

<form onSubmit ="return runAll();">
    Please enter your name.
    <input type ="text" id="lastNameField">
    <br>
    <button>submit</button>
</form>

我想获得以下数据框:

user_id | datetime   | type
1       | 2015-01-01 | q
1       | 2015-01-01 | d
1       | 2015-01-02 | d
2       | 2015-01-01 | d
2       | 2015-01-02 | q
2       | 2015-01-02 | q

我知道如果没有user_id | 2015-01-01 | 2015-01-02 1 | q:1, d:1 | d:1 2 | d:1 | q:2 列,我可以使用pivot_table。但是,我还需要考虑它。我想知道是否有人对此问题有任何优雅的解决方案?

P.S。输出表格单元格看起来并不完全相同。作为替代解决方案,可以丢弃(d和q)的计数。

1 个答案:

答案 0 :(得分:3)

<强> to_json
这让你非常接近。单元格值是字符串。

df.groupby(
    ['user_id', 'datetime']
).type.apply(lambda x: pd.value_counts(x).to_json()).unstack()

enter image description here

<强> MultiIndex
这可能更有意义

df.groupby(
    ['user_id', 'datetime']).type.apply(pd.value_counts).unstack(['datetime', -1])

enter image description here