Python - 按日期透视日志数据

标签 python pandas pivot-table

我有一个这样的数据框:

 Id      Date    Result
 id1     date1   result1
 id1     date2   result2
 .        .        .
 .        .        .
 id2     date11  result11
 id2     date22  result22
 .        .        .
 .        .        .

我想将此数据框转换为此数据框:

 Id        Vector
 id1      [date1: result1, date2: result2, ... ]
 id2      [date11: result11, date22: result22, ... ]

你能帮我解决这个问题吗?

谢谢你,

问候。

最佳答案

注意一点...您想要的输出看起来像列表和字典( [date11: result11, date22: result22, ... ] )。不确定你真正想要哪个。我用两种方式做到了......输出一个字典和一个元组列表。您应该能够从那里修改为您想要的任何内容。

完整过程,输出为字典...

import numpy as np
import pandas as pd

# mimick your sample
arr = [['id1','date1','result1'],
      ['id1','date2','result2'],
      ['id2','date11','result11'],
      ['id2','date22','result22']]
df = pd.DataFrame(arr, columns = ['Id', 'Date', 'Result'])

# helper functions to create 'Vector' column in df2
def raw_func(dt, rslt):
    return dict(zip(dt, rslt))
func = np.vectorize(raw_func, otypes=[object])

# group by and agg into lists
df2 = df.groupby('Id').agg({'Date': list, 'Result': list})
df2
#                  Date                Result
# Id                                         
# id1    [date1, date2]    [result1, result2]
# id2  [date11, date22]  [result11, result22]

# merge Date and Result into dict
df2['Vector'] = func(df2.Date, df2.Result)
df2.reset_index(inplace=True)
df2 = df2.loc[:,['Id', 'Vector']]
df2
#   Id                                        Vector
#  id1      {'date1': 'result1', 'date2': 'result2'}
#  id2  {'date11': 'result11', 'date22': 'result22'}

或者您可以将 def raw_func() 中的 dict 更改为 list...那么您的输出将是元组列表.

#   Id                                    Vector
#  id1      [(date1, result1), (date2, result2)]
#  id2  [(date11, result11), (date22, result22)]

关于Python - 按日期透视日志数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54935097/

相关文章:

mysql - 我该如何连接两个表并动态进行透视

Python-根据多个日期创建新列

python - 如何从列表中提取相等元素的索引?

python - 检查 Pyro 远程对象是否可达

python - 根据日期范围按类别计算总发生次数和发生次数

excel - 来自枢轴的动态图表

MySQL - 选择中的子查询

python - 如何聚合group by并在出现某个值后丢弃行?

python - 在多种条件下合并来自多个数据帧的数据

python - Pandas 数据转换