python - 使用pivot_table时将分类数据与数值数据相结合

标签 python pandas dataframe pivot-table

我必须跟踪数据(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()

enter image description here

多索引
这可能更有意义

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

enter image description here

关于python - 使用pivot_table时将分类数据与数值数据相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41915097/

相关文章:

Python Pandas,将 DataFrame 写入固定宽度文件(to_fwf?)

performance - data.frame 方法的最有效列表?

python - 如何使用 python 检测计算机暂停?

python - 在两个 pandas 数据框中查找匹配值并从匹配行返回一个值

Python - data.to_csv 输出格式

r - 对数据应用函数并在 R 中获得矢量/df 输出?

r - 在 R 中将字符串分解为多个虚拟变量

python - 如何在我的程序中获得除数之和?

python - 如何从请求中解析 xml?

python - 如何仅在特定时间间隔内增加值(value)python