我必须跟踪数据(300 万行):
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
我知道如果没有 type
列,我可以使用 pivot_table
。不过,我也需要考虑一下。我想知道是否有人有任何优雅的解决方案来解决这个问题?
附注输出表单元格看起来不太完全相同。作为替代解决方案,可以丢弃(d 和 q 的)计数。
最佳答案
to_json
这让你们真正接近。单元格值是字符串。
df.groupby(
['user_id', 'datetime']
).type.apply(lambda x: pd.value_counts(x).to_json()).unstack()
多索引
这可能更有意义
df.groupby(
['user_id', 'datetime']).type.apply(pd.value_counts).unstack(['datetime', -1])
关于python - 使用pivot_table时将分类数据与数值数据相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41915097/