我有一个这样的数据框:
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/